개인적으로 사용하기 위해 서버에 로그온하기 위해 전화를해야하는 안드로이드 응용 프로그램에서 작업 중입니다. 이 목적으로 등록 된 방송 수신자를 보유하고 있으며 모든 유형의 전화와 세부 정보를 감지 할 수 있습니다. 그러나 정확한 발신 통화 시간을 감지하는 것은 불가능합니다. 즉, 정확한 통화 지속 시간이 아닌 outdoing 통화에 대한 완전한 OFFHOOK 시간을 감지 할 수 있습니다. 통화 로그 기록에서 레코드를 읽으려고 시도 할 때만 발신 통화가 끝난 경우입니다. 나가는 통화가 끝났음에도 불구하고 broadcastreceiver에서 통화 로그 기록을 읽을 수 있지만 통화 기록 항목에 현재 수신 된 통화의 항목이 표시되지 않습니다. 통화 기록에서 이전 통화를 모두 볼 수 있지만 내가 수신 한 통화는 볼 수 없습니다. 내 코드에서 here의 Gabe Sechan 예제를 사용하고 있습니다. 그리고 나는이 같은 outgoingcallended 방법에안드로이드 broadcastreceiver에서 새로운 통화 로그 레코드를 찾을 수 없음
ContentResolver crs = globalContext.getContentResolver();
Cursor cr = getAllCallLogs(crs);
if(cr.moveToFirst()){
duration = cr.getString(cr
.getColumnIndex(android.provider.CallLog.Calls.DURATION));
callNumber = cr.getString(cr
.getColumnIndex(android.provider.CallLog.Calls.NUMBER));
}
private Cursor getAllCallLogs(ContentResolver cr) {
// reading all data in descending order according to DATE
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);
return cur;
}
를 최근 통화 내역을 읽으려고하지만 callNumber 이전 전화 번호가 아니라 내가 broadcastreciver과 동일한 기간의 경우와받은의 하나입니다. 전화 로그를 읽으려고 할 때까지 업데이트되지 않으므로 어떻게 해결할 수 있습니까? 내가 뭘 놓치고 있니?
이유는 방송을 받았을 때 동일한 레코드가 아직 DB에 업데이트되지 않는 것입니다. Praveen이 올바르게 지적한대로 지연을 추가 할 수 있지만 내용 관찰자를 추가하는 것이 좋습니다 – Ayaanp