项目中到通讯录以及通话记录的查询,本来在网上查了下资料,以为很简单就能实现。通讯录的查询没有什么问题,但是查询通话记录的时候遇到了问题。
当我根据电话号码来查询通话记录的时候,发现基本上查询到的记录只有寥寥几条,远比在手机自带通讯录中的通话记录少,但是我查询所有记录的时候,
获得的数据却没有损失。
这说明,应该是查询条件电话号码有问题,于是就去手机本地的通话记录数据库中查看数据库表,(手机需要获得root权限,并使用RE文件管理器查看)
路径是:data/data/com.android.providers.contacts/databases/contacts2.db
然后打开calls表:
_id number date duration type new name//主要用的就死这几个字段,number即是查询的电话号码,duration是通话时间,type有3个值:1代表呼入,2代表呼出
3代表未接,其他的看名字就知道是什么了,以下是核心代码
ContentResolver resolver = context.getContentResolver();
String projection[] = new String[]{CallLog.Calls.DATE, CallLog.Calls.NUMBER,
CallLog.Calls.TYPE, CallLog.Calls.DURATION};
Cursor recordCursor = resolver.query(CallLog.Calls.CONTENT_URI, projection,"number=? or number=?"
, phone, CallLog.Calls.DEFAULT_SORT_ORDER);
SimpleDateFormat sfd = new SimpleDateFormat("MM-dd HH:mm",Locale.getDefault());
if(recordCursor != null