2016-10-30 6 views
0

私のAndroid Appの連絡先に「Recent Activity」を表示する必要があります。だから私はその連絡先のすべての着信、発信、およびすべてのタイプのコールを読む必要があります。連絡先ID(ContactsContract.PhoneLookup._ID)でそれを行う必要があります。特定の連絡先のコールログを読む(連絡先ID付き)

すべてのCallLogを読み込み、その特定のIDのリストを検索できますが、非常に遅いです。だから私はそれを行うためのカスタムカーソルが必要だと思う。カーソルを書き込もうとしましたが、現在は動作していません。

cursor = getContentResolver().query(
    CallLog.Calls.CONTENT_URI, 
    null, 
    CallLog.Calls._ID+" = ?", 
    new String[]{String.valueOf(148)}, 
    null); 

答えて

0

ここに必要なコードがあります。

Cursor contact = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, ContactsContract.Contacts._ID + "=?", new String[]{String.valueOf(148)}, null, null); 
    if (contact != null && contact.moveToNext()) { 
     String lookupKey = contact.getString(contact.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY)); 
     int contactId = contact.getInt(contact.getColumnIndex(ContactsContract.Contacts._ID)); 
     Uri contactUri = ContactsContract.Contacts.getLookupUri(contactId, lookupKey); 

     Cursor calls = getContentResolver().query(CallLog.Calls.CONTENT_URI, null, CallLog.Calls.CACHED_LOOKUP_URI + "=?", new String[]{contactUri.toString()}, CallLog.Calls.DATE + " DESC"); 
     while (calls.moveToNext()) { 
      Log.d(TAG, "type: " + calls.getString(calls.getColumnIndex(CallLog.Calls.TYPE)) + ", number: " + calls.getString(calls.getColumnIndex(CallLog.Calls.NUMBER)) + ", " + "cached_name: " + calls.getString(calls.getColumnIndex(CallLog.Calls.CACHED_NAME)) + ", " + "date: " + calls.getString(calls.getColumnIndex(CallLog.Calls.DATE))); 
     } 
    } 
+0

これは機能しています。ありがとう。 – omerkaraca

+0

あなたは大歓迎です。私の答えを受け入れることができますか?コースの – kws

+0

。しかし、一つのことがあります。私はあなたの方法をもっとテストしました。私はそれが私の連絡先の一部を返さないことを発見しました。私は理由を見つけることができませんでした。あなたは何ができると思いますか?エラーや何もないので、連絡先を見つけることができません。 – omerkaraca

関連する問題