2013-07-11 37 views
0

我的用例很簡單:我想創建一個類似於標準android手機應用程序中最近通話列表視圖的列表視圖。如何從Android中最近的通話信息中獲取聯繫人圖片

我可以使用getContentResolvery()查詢android.provider.CallLog.Calls中的最近調用query()...問題是我還需要聯繫人圖像,如果該聯繫人存在於用戶聯繫人列表中...我相信這將是從CallLog.Calls到其他提供者的聯合,也許是ContactContract提供者?

理想情況下,我將在一個遊標中收到此信息。

感謝您的幫助

+0

什麼具有u試圖獲得

聯繫ID? – anon

回答

2

使用聯繫人ID獲取照片的URI。使用下面的代碼用於獲取照片URI:

import android.provider.ContactsContract; 
import android.provider.ContactsContract.CommonDataKinds.Phone; 

public Uri getPhotoUri(long contactId) { 
    ContentResolver contentResolver = getContentResolver(); 

    try { 
     Cursor cursor = contentResolver.query(ContactsContract.Data.CONTENT_URI,null,ContactsContract.Data.CONTACT_ID+ "="+ contactId+ " AND "+ ContactsContract.Data.MIMETYPE+"='"+ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE+ "'", null, null); 

     if (cursor != null) { 
     if (!cursor.moveToFirst()) { 
      return null; // no photo 
     } 
     } else { 
     return null; // error in cursor process 
     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
     return null; 
    } 

    Uri person = ContentUris.withAppendedId(
     ContactsContract.Contacts.CONTENT_URI, contactId); 
    return Uri.withAppendedPath(person,ContactsContract.Contacts.Photo.CONTENT_DIRECTORY); 
    } 

更新:可使用的電話號碼

import android.provider.ContactsContract.PhoneLookup; 

public String fetchContactIdFromPhoneNumber(String phoneNumber) { 
    Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,Uri.encode(phoneNumber)); 
    Cursor cursor = this.getContentResolver().query(uri,new String[] { PhoneLookup.DISPLAY_NAME, PhoneLookup._ID },null, null, null); 

    String contactId = ""; 

    if (cursor.moveToFirst()) { 
     do { 
     contactId = cursor.getString(cursor.getColumnIndex(PhoneLookup._ID)); 
     } while (cursor.moveToNext()); 
    } 

    return contactId; 
    } 
+0

不幸的是,CallLog.Calls內容提供者中沒有contactID。我認爲CallLogs.Call和ContactsContract之間唯一的共同領域是電話號碼或名稱也許......我們可以使用這些字段來調整您的解決方案嗎? – Andrew

+1

您可以使用電話號碼獲取ID – anon

+1

使用ContactsContract.PhoneLookup – anon

相關問題