我試圖顯示聯繫人列表以及與其關聯的照片,但是我看到大多數沒有照片的聯繫人,雖然他們在我去手機的(SG2)默認聯繫人列表。我想這是因爲其中一些聯繫人實際上是合併的,並且圖片來自未在列表中顯示的(原始?)聯繫人,所以問題是 - 我如何獲得與給定聯繫人合併的所有聯繫人?我試着玩SQLite,但是我找不到任何能夠唯一標識合併聯繫人的列。如何獲取與給定聯繫人合併的所有聯繫人
從代碼的角度來看,我開始與這個方法: 保護位圖getImageByContactId(最終上下文appContext,最終字符串strContactId) { 位圖bmContactImage = NULL;
Uri contactUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long.parseLong(strContactId));
Uri photoUri = Uri.withAppendedPath(contactUri, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);
InputStream image = null;
try {
image = appContext.getContentResolver().openInputStream(photoUri);
bmContactImage = BitmapFactory.decodeStream(image);
try {
image.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e1) {
// This can be ignored because the Uri is generic and photo may not really exist
}
return bmContactImage;
}
但這隻能返回相關的「原創」接觸匹配原有的搜索條件的照片(在我的情況 - 接觸ID) - 不若照片是相關聯的鏈接到原始聯繫人的聯繫人。
我希望能做出類似下面的工作,如果我只能得到與原始聯繫人鏈接/關聯/合併的聯繫人的(原始?)ID,但我似乎無法找到一種方法找到那些「其他」接觸......
public static Bitmap loadContactPhoto(ContentResolver cr, long id) {
Uri uri = Uri.parse(String.format("content://com.android.contacts/contacts/%s", id));
InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, uri);
if (input == null) {
return null;
}
return BitmapFactory.decodeStream(input);
}
底線 - 我想要做的是顯示聯繫人的照片,無論是從搜索條件匹配的接觸 - 或者任何的聯繫人與該聯繫人合併 - 任何解決方案將不勝感激!
謝謝!
如果你發佈你的代碼,它會更容易嘗試和協助你... – Muzikant
添加代碼 - 謝謝! –