导出并整理android通话记录的简单方法


最近需要导出自己手机的通话记录,找了个应用导出,之后自己做一些处理,得到了表格样子的通话记录。

应用我用的是Call Logs Backup & Backup,没有用腾讯手机助手之类的,简单为上。

简单的应用操作也很简单,Backup按钮帮你导出最近500条通话记录,默认备份到内部存储,建议备份到/mnt/sdcard下。
应用备份出来的是一个XML,同目录下还有一个XSL文件,用来美化XML样式的。XML的格式大致是这样:

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?><!--File Created By Call Logs Backup & Restore v3.22 on 24/12/2013 13:26:12--><?xml-stylesheet type="text/xsl" href="calls.xsl"?>
<calls count="500">
  <call number="12345678901" duration="0" date="1376741581884" type="2" readable_date="Aug 17, 2013 8:13:01 PM" contact_name="Foo" />
  .....
</calls>

calls.xsl就是同目录下的样式文件。
用浏览器显示XML时,默认会应用XSL,样子就是表格。和我的要求很接近了,除了默认通话记录是从最早到最近的,我想要的是最近到最早的。应用的配置我大致看了下,没有设置排序依据。写一段简单的python/ruby脚本肯定是可以做的。不过我看到call记录都是一行一行的,又知道有一个shell命令tac倒序输出,所以我自己做了点简单处理:

head -n 2 calls.xml > calls-desc.xml
tail -n +3 calls.xml | head -n -1 | tac >> calls-desc.xml
echo '</calls>' >> calls-desc.xml

第一条命令复制第一行和第二行,即XML meta和起始标签。第二条命令倒序中间所有的call,行区间是[3:-1](python表达形式)。最后第三条命令补上结束标签

经过上述处理之后,用浏览器打开,再打印到文件(PDF),样子还是不错的。