安卓通话记录最新条目


我想

在接到未接来电后开始一项活动。但我无法从通话记录中读取最新的未接来电条目,而是在当前未接来电之前读取该条目。 我在电话状态空闲时读取它。

示例:假设有两个未接来电条目,一个在 11:10,另一个在 11:11。我在 12:12 接到未接来电,我的活动需要显示在 12:12、11:11、11:10 获得的未接来电。而是读11:11,11:10。缺少最新条目。我该怎么办?我正在使用服务并阅读通话记录,电话状态。

Cursor c = getContentResolver().query(allCalls, null, null, null, order); 
  if (c.moveToFirst()) { 
    do{ 
      // getting number,type,ack etc} 
    while (c.moveToNext()); }

您需要使用 TelephonyManager 和 PhoneStateListener 侦听它。

此代码将向您展示如何操作:

if(lastStart == TelephonyManager.CALL_STATE_RINGING)
{
    long now = System.currentTimeMillis();
    long duration = (now-ringStartTime)/1000;
    bindService.AddMissCallInfo(ringPhoneNumber, ringStartTime, duration);
    Log.i(Constants.Tag,"service add miss call!");
}

代码取自:http://code.google.com/p/android-miss-call/source/browse/trunk/src/com/call/DialPhoneStateListener.java?r=3

你可以这样用。

      c=mContext.getContentResolver().query(CallLog.Calls.CONTENT_URI, projection, null, null, CallLog.Calls._ID + " DESC");
      if(c.getCount()!=0){
                c.moveToFirst();
                 lastCallnumber = c.getString(0);
                 lastCallnumber=FormatNumber(lastCallnumber);                     
                 String type=c.getString(1);
                 String duration=c.getString(2);
                 String name=c.getString(3);
                 String id=c.getString(4);
                 System.out.println("CALLLLing:"+lastCallnumber+"Type:"+type+"t id:"+id);
 if(type.equals("3")){
    //you can get last missedcall here
 }

您可以尝试一下可能对您有所帮助。

最新更新