2013-05-14 65 views
0

我目前使用檢測未接來電:如何檢測,如果進來的漏接電話被讀取

String[] projection = new String[]{CallLog.Calls.NUMBER, 
       CallLog.Calls.TYPE, 
       CallLog.Calls.DURATION, 
       CallLog.Calls.CACHED_NAME, 
       CallLog.Calls._ID}; 

     String where = CallLog.Calls.TYPE+"="+CallLog.Calls.MISSED_TYPE+" AND NEW = 1";     

Cursor c = context.getContentResolver().query(CallLog.Calls.CONTENT_URI,projection,where, null, null);  c.moveToFirst();    
Log.d("CALL", ""+c.getCount());   
if(c.getCount() > 0) 
// code that displays in a textview the number of missed calls; 

使用標誌,我顯示未接來電的客戶。

有沒有方式我可以將textview的值重置爲0如果未接電話被讀取

是否有廣播接收器或者是什麼在未讀電話被讀取時通知我?

回答

0

獲取有關未接來電的信息。您可以使用以下內容。

String[] projection = { CallLog.Calls.CACHED_NAME, CallLog.Calls.CACHED_NUMBER_LABEL, CallLog.Calls.TYPE }; 
String where = CallLog.Calls.TYPE + "=" + CallLog.Calls.MISSED_TYPE + " AND " + CallLog.Calls.NEW + "=1";   
Cursor c = this.getContentResolver().query(CallLog.Calls.CONTENT_URI, projection, where, null, null); 

在這個遊標中,您將獲得所有未接來電的詳細信息。然後,你必須再次打電話來檢查是否讀取了電話。我認爲使用TimerTask或使用AlaramManager可以再次填充遊標。或者,如果您在活動中顯示,則在該活動開始時嘗試再次填充它。

希望它能幫助你。

+0

謝謝你的接力。所以唯一的方法是重新調用檢測未接和未讀呼叫的方法?沒有其他方法嗎?你能給我一個最好的例子(代碼)嗎? – 2013-05-14 11:27:13

+0

如果你只想在活動中顯示,那麼我認爲你必須在onResume()中填充光標,所以如果你通過按下home按鈕離開應用程序,並且當代碼在onResume()時返回,那麼它將刷新光標。 – Rahil2952 2013-05-14 11:38:41

+0

我確實改變了onResume()方法,但是如果我不離開應用程序和某人打電話,並且我有一個新的未接電話,並且我的活動仍在屏幕上。 – 2013-05-14 11:43:05