Android通话记录最新条目

时间:2012-11-23 19:44:57

标签: android logging call

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

示例:假设有两个未接来电条目,一个在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()); }

2 个答案:

答案 0 :(得分:0)

您需要使用TelephonyManagerPhoneStateListener来收听。

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

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

答案 1 :(得分:0)

你可以这样使用。

      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
 }

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