1

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

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

2 回答 2

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
 }

你可以试试,可能对你有帮助。

于 2013-03-04T13:01:19.363 回答
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

于 2012-11-23T20:22:46.657 回答