-1
A
回答
0
首先添加此權限
<uses-permission android:name="android.permission.READ_CONTACTS" />
使用LoaderManager.LoaderCallbacks界面在你的活動是這樣的: ():
@Override
public Loader onCreateLoader(int loaderID, Bundle args) {
Log.d(TAG, "onCreateLoader() >> loaderID : " + loaderID);
switch (loaderID) {
case URL_LOADER:
// Returns a new CursorLoader
return new CursorLoader(
this, // Parent activity context
CallLog.Calls.CONTENT_URI, // Table to query
null, // Projection to return
null, // No selection clause
null, // No selection arguments
null // Default sort order
);
default:
return null;
}
}
打電話給你的細節onLoadFinished()方法:
Override
public void onLoadFinished(Loader loader, Cursor managedCursor) {
Log.d(TAG, "onLoadFinished()");
StringBuilder sb = new StringBuilder();
int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER);
int type = managedCursor.getColumnIndex(CallLog.Calls.TYPE);
int date = managedCursor.getColumnIndex(CallLog.Calls.DATE);
int duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION);
sb.append("<h4>Call Log Details <h4>");
sb.append("\n");
sb.append("\n");
sb.append("<table>");
while (managedCursor.moveToNext()) {
String phNumber = managedCursor.getString(number);
String callType = managedCursor.getString(type);
String callDate = managedCursor.getString(date);
Date callDayTime = new Date(Long.valueOf(callDate));
String callDuration = managedCursor.getString(duration);
String dir = null;
int callTypeCode = Integer.parseInt(callType);
switch (callTypeCode) {
case CallLog.Calls.OUTGOING_TYPE:
dir = "Outgoing";
break;
case CallLog.Calls.INCOMING_TYPE:
dir = "Incoming";
break;
case CallLog.Calls.MISSED_TYPE:
dir = "Missed";
break;
}
sb.append("<tr>")
.append("<td>Phone Number: </td>")
.append("<td><strong>")
.append(phNumber)
.append("</strong></td>");
sb.append("</tr>");
sb.append("<br/>");
sb.append("<tr>")
.append("<td>Call Type:</td>")
.append("<td><strong>")
.append(dir)
.append("</strong></td>");
sb.append("</tr>");
sb.append("<br/>");
sb.append("<tr>")
.append("<td>Date & Time:</td>")
.append("<td><strong>")
.append(callDayTime)
.append("</strong></td>");
sb.append("</tr>");
sb.append("<br/>");
sb.append("<tr>")
.append("<td>Call Duration (Seconds):</td>")
.append("<td><strong>")
.append(callDuration)
.append("</strong></td>");
sb.append("</tr>");
sb.append("<br/>");
sb.append("<br/>");
}
sb.append("</table>");
managedCursor.close();
callLogsTextView.setText(Html.fromHtml(sb.toString()));
}
完整的詳細信息,請參閱這些參考資料:
相關問題
- 1. 如何在併發呼叫時撥打SIP呼叫會話
- 2. QBChat didReceiveMessage在接到呼叫時沒有被呼叫
- 3. Api呼叫請求每小時呼叫限制1個呼叫
- 4. 如何在.NET應用程序中實時從VoIP獲取呼叫者信息?
- 5. 呼叫時NGRX
- 6. 電話呼叫應用
- 7. 如果應用程序未運行(Viber,如呼叫功能),則接收呼叫
- 8. 休息呼叫
- 9. 短信接收的廣播接收機在Android中的未接呼叫時發出消息呼叫
- 10. 如何在接到呼叫時處理會話
- 11. 會話長度在呼叫開始時還是在呼叫結束時延長?
- 12. 當使用resp api創建呼叫時,沒有振鈴的呼叫
- 13. 呼叫時發現()
- 14. 程序鏈接表和呼叫相對
- 15. 併發呼叫對話
- 16. 呼叫在的NodeJS時間
- 17. 呼叫來電呼叫
- 18. 每當有電話時記錄呼叫信息
- 19. 呼叫dialog.dismiss這將隱藏對話框
- 20. AJAX呼叫塊顯示對話框
- 21. 關閉線程在執行端點呼叫時消失
- 22. 在angularjs呼叫超時
- 23. 來自iOS應用程序的呼叫
- 24. 會話在每個WCF呼叫方案的會話中關閉
- 25. 在Twilio中爲呼叫者播放音樂時轉移呼叫
- 26. 如何連接IP電話呼叫到我的網頁
- 27. 如何限制呼叫到API休息
- 28. 當選擇之前斷開呼叫時的關閉活動(未接電話)
- 29. 會議呼叫應用程序
- 30. 應用程序處理呼叫阻止
謝謝新,但ÿ問題在於,當我接到電話時,同時我想顯示一個用戶呼叫活動信息對話框 – Mike
這是核心邏輯。在onCreateLoader中調用細節,而不是onload finsh()函數。 – 2017-03-16 07:27:25
查看鏈接2中的MainActivity代碼並更改初始化函數,如下所示: – 2017-03-16 07:33:39