android通话记录备份实现

android通话记录备份实现

ID:1218704

大小:43.00 KB

页数:8页

时间:2017-11-08

android通话记录备份实现_第1页
android通话记录备份实现_第2页
android通话记录备份实现_第3页
android通话记录备份实现_第4页
android通话记录备份实现_第5页
资源描述:

《android通话记录备份实现》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Android通话记录备份实现[复制链接](一)前言Android默认提供了联系人备份到sd卡的功能(代码在com.android.vcard包里面),我们可以把联系人导出成.vcf文件存在sd卡中;如果换手机了,我们又可以把联系人从sd卡文件中导入进来。那么,通话记录我们也能不能做出类似的功能呢?答案是肯定的!(二)导出通话记录既然是备份通话记录,那就肯定包括导出和导入的功能,这里我们先讲导出通话记录。1.根据通话记录导出的规范,导出的文件一般以.vcl后缀结尾,中间的内容是BEGIN:VCALLSLOT:0//卡槽号0:单卡

2、手机1:双卡手机卡槽12:双卡手机卡槽2TYPE:1//电话类型1:接入电话,2:呼出电话3:未接电话Date:2013/02/1214:11:12GMT//来电或者去点的时间备份时以GMT时间记录,恢复时显示手机时区对应时间NUMBER:+86134xxxxx//对方号码DURATION:5//持续时间,秒数END:VCALL那么这里就是一条通话记录的存储格式了,以BEGIN:VCALL开始END:VCALL结束。//表示的是该字段的含义,只是为了让大家理解,不会导入到实际的文件中去。那么我们来看实际怎么导出的。2.查询通话记

3、录列表ok..既然是保存通话记录,那么首先要查询通话记录Android里面提供了一个CallLogProvider来满足大家的这个需求,它在系统中配置的名字是“call_log”,所以大家只要提供一个这样的Uri就可以查询了,比如:代码:Uriuri=Uri.parse("context://call_log/calls");Cursorc=mContext.getContentResolver().query(uri,xxx,xxx);这样就可以查询出所有的通话记录,得到游标。。3.从游标中剥离出想要保存的字段和数据,写入文件

4、既然找到了游标,那么接下来就是从游标中找到我们想要写入文件的字段数据,比如,基本如下:代码:protectedObjectdoInBackground(Object...params){//后台异步Task,后台查询数据和写入文件,每导出一条记录,更新一次进度条super.doInBackground(params);Stringpath=(String)params[0];UriqueryUri=Uri.parse("content://call_log/calls");CursorqueryedCursor=mContext

5、.getContentResolver().query(queryUri,null,null,null,null);if(queryedCursor==null

6、

7、queryedCursor.getCount()==0){return-1;}Object[]message=newObject[1];message[0]=queryedCursor.getCount();publishProgress(message);StringBuildersb=newStringBuilder();OutputStreamoutputStr

8、eam=null;Writerwriter=null;try{outputStream=newFileOutputStream(path);writer=newBufferedWriter(newOutputStreamWriter(outputStream));for(queryedCursor.moveToFirst();!queryedCursor.isAfterLast();queryedCursor.moveToNext()){if(mCancel){break;}sb.setLength(0);sb.append("

9、BEGIN:VCALL").append("");intsubId=queryedCursor.getInt(queryedCursor.getColumnIndex("sub_id"));intcallType=queryedCursor.getInt(queryedCursor.getColumnIndex("type"));//incall/outcall/missedcalllongdate=queryedCursor.getLong(queryedCursor.getColumnIndex("date"));Str

10、inggmtData=getGTMDatetimeString(date);Stringnumber=queryedCursor.getString(queryedCursor.getColumnIndex("formatted_number"));String

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。