2013-03-22 76 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的案例中。