访问android平台的通话记录CallLog

转载 2012年03月30日 09:51:54
Android平台开放程度的确很厉害,你几乎可以调用任何底层的接口,甚至拦截到短信或者呼入电话。这些是J2ME平台无法比拟的。本文介绍一下如何访问android的通话记录。

  android平台上的通话记录是以Content Provider的形式存储在手机上的,因此你需要使用ContentResolver来查询通话记录,返回Cursor接口。如下所示:

package com.me;

import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.CallLog;
import android.widget.SimpleAdapter;
import android.widget.SimpleCursorAdapter;

public class CallLogActivity extends ListActivity {

 @Override
 protected void onCreate(Bundle arg0) {
  super.onCreate(arg0);
  setContentView(R.layout.main);
  Cursor cursor = getContentResolver().query(CallLog.Calls.CONTENT_URI,
    null, null, null, CallLog.Calls.DEFAULT_SORT_ORDER);
  startManagingCursor(cursor);
  SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
    android.R.layout.simple_list_item_1, cursor,
    new String[] { CallLog.Calls.NUMBER },
    new int[] { android.R.id.text1 });

  setListAdapter(adapter);
 }

}

  获得了Cursor之后便可以构建一个Adapter然后调用setListAdapter()来把通话记录显示在屏幕上。CallLog类中定义了Calls类,在android中可以看到大量的内部类的设计。Calls定义了很多常量,方便你来访问通话记录,主要包括两个URI和多个字段定义,比如我们在这里用到的NUMBER。更多内容请参考Andorid doc。

  下面是/res/layout/main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
     android:layout_height="fill_parent">
   
    <ListView android:id="@+id/android:list"
          android:layout_width="fill_parent"
         android:layout_height="fill_parent"/>
   <TextView android:id="@+id/android:empty"
          android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:text="No Notes!"/>
</LinearLayout>


Android通话记录CallLog简单摘要

最近做些和通讯相关的东西,正好梳理下流程,以备不需之用;俗话说得好“好脑子比不了烂笔头”;...
  • wdaming1986
  • wdaming1986
  • 2014年02月25日 19:10
  • 15204

访问android平台的通话记录CallLog

Android平台开放程度的确很厉害,你几乎可以调用任何底层的接口,甚至拦截到短信或者呼入电话。这些是J2ME平台无法比拟的。本文介绍一下如何访问android的通话记录。   android平...
  • hb8676086
  • hb8676086
  • 2015年12月19日 09:49
  • 929

第68章、使用ContentProvider操作通话记录(从零开始学Android)

android也提供了很多接口,通过ContentResolver().query方法,传入不同的URI即可访问相应的数据集。   读取通话记录信息,传入的URI为:CallLog.Calls.CO...
  • jianghuiquan
  • jianghuiquan
  • 2013年03月05日 23:44
  • 5168

Android 7.1.1 通话记录数据库详解

在拨打或接听来电时,都会在Dialer中看到新增的通话记录,前两天遇到了个通话记录中类型显示得不对的问题,就跟踪了下Android中CallLog的相关流程,在这记录下,以后查起来方便些,顺便分享给大...
  • yin1031468524
  • yin1031468524
  • 2017年02月28日 17:20
  • 2869

Dialer通话记录中的归属地显示

去掉通话记录中的来电归属地的显示 在文件中添加的该id的是: R.id.call_location_and_date PhoneCallDetailsViews fromView(View vie...
  • lz99770337
  • lz99770337
  • 2016年01月14日 15:33
  • 785

Android4.4 Telephony流程分析——拨号应用(Dialer)的通话记录加载过程

本文代码以MTK平台Android 4.4为分析对象,与Google原生AOSP有些许差异,请读者知悉。 Android系统通话记录存储在联系人数据库contacts2.db中的calls表中,通...
  • canghai1129
  • canghai1129
  • 2014年12月01日 18:51
  • 2395

Android通话记录过滤和监听

1.通话记录过滤     通常在显示通话记录的时候,只需要显示每个人通话记录的最后一次,那么就要过滤掉每个人多次通话记录的其它记录,一想到这个,自然就想到sql group by语句,但是通过Andr...
  • wangjiang_qianmo
  • wangjiang_qianmo
  • 2015年09月30日 18:31
  • 1648

android 5.0 上拨打紧急号码无通话记录的原因

测试了两种情况  无sim卡 拨打112无通话记录    拨打110无通话记录 有sim卡  拨打112无通话记录    拨打110有通话记录 在packages/services/Telec...
  • aaa111
  • aaa111
  • 2015年03月02日 09:45
  • 2238

Android获取通话记录

public class CallHistoryHelper { public static String getCallHistoryStr(Context context) { Stri...
  • chaoyu168
  • chaoyu168
  • 2015年10月13日 09:35
  • 1532

Android开发之通话记录

本文主要实现类似iPhone通话记录效果,即相邻通话如果通话号码相同、通话类型(呼入、呼出、未接)相同、间隔时间(某一阈值范围内),则将其归为一条记录,否则,将其分别显示。首先获取通话记录必须添加一下...
  • u012864297
  • u012864297
  • 2016年12月05日 19:09
  • 933
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:访问android平台的通话记录CallLog
举报原因:
原因补充:

(最多只允许输入30个字)