私はもちろん、個人的な使用のためにサーバーにログオンするための電話を必要とするアンドロイドアプリケーションに取り組んでいます。私はこの目的のために登録された放送受信機を持っており、すべてのタイプの呼とその詳細を検出することができます。しかし、正確な発信時間を検出することは不可能である。すなわち、正確に通話時間ではないアウト・アウト・コールの完全なオフフック時間を検出することになる。そのため、発信ログが終了した場合のみ、コールログ履歴からレコードを読み取ろうとします。私は、発信呼び出しが終了したときに、broadcastreceiverからのコールログ履歴を読み取ることができますが、現在受信したコールのエントリがコールログエントリに表示されません。私は以前の通話をすべて通話履歴に表示できますが、受信した通話は表示できません。私はコード内でhereのGabe Sechanの例を使用しています。そして私は、このようなoutgoingcallended方法でandroid 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