2016-03-10 226 views
1

我正在開發通話記錄應用程序。使用以下代碼,我知道的callType可能值爲: 1 =接聽來電,2 =去電,3 =來電未接,5 =來電被拒。 什麼都沒有回答爲呼出值」和‘呼出拒絕’android.provider.CallLog.Calls.TYPE傳出呼叫未應答,傳出呼叫被拒絕?

String strOrder = android.provider.CallLog.Calls.DATE + " DESC"; 
Uri callUri = Uri.parse("content://call_log/calls"); 
Cursor cur = cr.query(callUri, null, null, null, strOrder); 
// loop through cursor 
while (cur.moveToNext()) { 
    String callType = cur.getString(cur.getColumnIndex(android.provider.CallLog.Calls.TYPE)); 
} 

回答

1

你不應該使用int來檢查類型(如if (callType == 1))爲1可能意味着在不同的Android版本別的東西,而是使用由API提供的constants。你的情況,這些都是

  • CallsLog.Calls.INCOMING_TYPE來電
  • CallsLog.Calls.MISSED_TYPE未接來電
  • CallsLog.Calls.OUTGOING_TYPE撥出電話
  • CallsLog.Calls.VOICEMAIL_TYPE語音信箱電話

你不應該打擾它常具有什麼樣的價值(1,2或3),因爲這些可能會改變,但他們的名字(INCOMING_TYPEMISSED_TYPEOUTGOING_TYPEVOICEMAIL_TYPE )絕對不會改變。

希望這有助於!

+0

是的我應該使用常量感謝您的建議。但傳出拒絕或不回答的常量是什麼? – farhang67

+0

你可能不知道他們,因爲這些沒有任何常量,我列出的是'Calls'類中唯一的常量,你可以自己查看[here](http://developer.android .com/reference/android/provider/CallLog.Calls.html),但只有我放入的那些被列爲調用類型。 – Chaoz

+0

這聽起來是調用類沒有完整的常量,因爲例如我發現價值5是「來電拒絕」,但沒有常數! – farhang67