2015-04-15 53 views
0

無聯繫人檢索聯繫人的照片Id

我無法僅使用他/她的電話號碼檢索聯繫人的照片。 我遵循使用「ContactsContract.Contacts.Photo」的官方Android示例。不幸的是,contactId參數是必需的。如何檢索Android中的聯繫人照片?

我成功設法通過使用下面的代碼來獲取最終的圖像:

long contactId = 0; 
Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber)); 

Cursor cursor = context.getContentResolver().query(uri, 
      new String[] { ContactsContract.PhoneLookup.DISPLAY_NAME, ContactsContract.PhoneLookup._ID }, 
      null, null, null); 
if (cursor.moveToFirst()) { 
    contactId = cursor.getLong(cursor.getColumnIndex(ContactsContract.PhoneLookup._ID)); 
} 
Uri contactUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactId); 

InputStream contactPhotoInputStream = ContactsContract.Contacts.openContactPhotoInputStream(context.getContentResolver(), contactUri); 

return BitmapFactory.decodeStream(contactPhotoInputStream); 

然而,正如人們可以看到,我得先查詢的ContactID。現在我的問題是,如果可以直接查詢聯繫人的圖片?

回答

0

我不知道這個,但你可以嘗試

Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; 
String[] projection = new String[] {ContactsContract.CommonDataKinds.Phone.PHOTO_URI}; 
String where = ContactsContract.CommonDataKinds.Phone.NUMBER + " = ?"; 

//You can use ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER 
// depending on how the number is formatted 

///the format of the phone number is important 
String whereArgs = phoneNumber; 

Cursor people = getContentResolver().query(uri, projection, where, whereArgs, null); 
+0

感謝。但不幸的是,我無法得到這個工作。我想我會堅持我目前的實施。 – Patrick

+0

@帕特里克我試過了,它確實有效。數字的格式對於這項工作很重要。看看我的編輯。 – Olayinka