经过一下午的研究,终于弄明白了android中,关于通话记录取得的方法。下边是自己的一点心得。
final Cursor cursor = cr.query(CallLog.Calls.CONTENT_URI, new
String[] {
CallLog.Calls.NUMBER, CallLog.Calls.CACHED_NAME,
CallLog.Calls.TYPE, CallLog.Calls.DATE }, null, null,
CallLog.Calls.DEFAULT_SORT_ORDER);
final Cursor cursor =
cr.query(数据库表名,取得的数据数组(里边包含字段名称),条件,参数组,排序等信息)
//这就相当于一条SQL语句//取得所有通话信息 这里边稍微有点复杂
for (int i = 0; i < cursor.getCount(); i++)
{
cursor.moveToPosition(i);
str =
cursor.getString(0);
type =
cursor.getInt(2);
if (type == 3) {
tel = str;
break;
}
} //取得值
final Cursor cursor = cr.query(CallLog.Calls.CONTENT_URI, new
String[] {
CallLog.Calls.NUMBER }, "type=3", null,
"date desc limit 1");
//这个就是取得最近的一次未接来电的电话号码。
if(cursor.moveToFirst()){
tel =
cursor.getString(0);
}
这个取值之后和最上边的值是一样的。
CallLog.Calls.CONTENT_URI
(通话记录数据库)
CallLog.Calls.NUMBER
(通话号码)
CallLog.Calls.CACHED_NAME
(通话人姓名)
CallLog.Calls.TYPE
(通话类型)
呼叫记录有三种类型:
来电:CallLog.Calls.INCOMING_TYPE(常量值:1)
已拨:CallLog.Calls.OUTGOING_TYPE(常量值:2)
未接:CallLog.Calls.MISSED_TYPE(常量值:3)
其实还有一种类型-拒接 系统未给出常量。但经测试后得出结论为4.
CallLog.Calls.DATE
(通话时间)
需要声明的权限 在AndroidManifest.xml中加入
android:name="android.permission.READ_CONTACTS"
/>读记录
android:name="android.permission.WRITE_CONTACTS"
/>写记录
这两条是和节点同级的
如果想加入呼叫权限,还要加上
android:name="android.permission.CALL_PHONE" />
还有发送短信权限
android:name="android.permission.SEND_SMS" />
还有连接互联网权限
CallLog.Calls.CONTENT_URI
:等价于:Uri.parse("content://call_log/calls");
如果觉得《android p获取通话记录_[android] 取得最近通话记录的方法》对你有帮助,请点赞、收藏,并留下你的观点哦!