2013-03-22 86 views
0

我试图从通话记录中找出最近未接电话号码。我使用了下面的代码,我想让它在后台运行,现在我在mainActivity类中编写了这个方法,当一个调用移动到未命中日志时,此函数应该可以工作。如何使它可能plz帮助访问android中拨打电话时的来电号码

public void SendSMStoMissedCall() 
{ 
    String[] strFields = {android.provider.CallLog.Calls.CACHED_NAME, 
      android.provider.CallLog.Calls.NUMBER,android.provider.CallLog.Calls.DATE, 
      android.provider.CallLog.Calls.TYPE}; 

    String strOrder = android.provider.CallLog.Calls.DATE + " DESC"; 

    Cursor mCallCursor = getContentResolver().query(android.provider.CallLog.Calls.CONTENT_URI,strFields, null, null, strOrder); 

    if (mCallCursor.moveToFirst()) 
    { 

     do 
     { 
      boolean missed = mCallCursor.getInt(mCallCursor.getColumnIndex(CallLog.Calls.TYPE)) == CallLog.Calls.MISSED_TYPE; 

      if (missed) 
      { 
       String name = mCallCursor.getString(mCallCursor.getColumnIndex(CallLog.Calls.CACHED_NAME)); 
       number = mCallCursor.getString(mCallCursor.getColumnIndex(CallLog.Calls.NUMBER)); 
       String time = mCallCursor.getString(mCallCursor.getColumnIndex(android.provider.CallLog.Calls.DATE)); 
         Log.d("PhoneLog", "You have a missed call from " + name + " on " + number + " at " + time); 
       String ContactName = objUtility.getContactNameFromNumber(number); 

       SendMessage(number); 
       getCurrentLocation(); 
      } 
     } 
     while (mCallCursor.moveToNext()); 

    } 

} 
+0

所以不起作用?你希望哪部分代码可以工作,但不是? – Calvin 2013-03-22 12:44:59

+0

@Calvin我想​​在后台做这项工作,当一个新的未接电话来到我想获得号码 – 2013-03-22 15:10:24

+0

我的意思是哪个部分不工作?你得到一个空游标?或者光标是空的?或游标返回错误的值?如果我不知道什么是错的,我不能帮助。 – Calvin 2013-03-22 15:22:18

回答

0

创建一个服务,在服务中实现一个PhoneStateListener。在PhoneStateListener的扩展类中,在onCallStateChanged方法中,将上面的代码放在TelephonyManager.CALL_STATE_IDLE的案例中。