我在為Android中的聯系人加載照片時遇到問題。我已經用谷歌搜索了一個答案,但到目前為止卻空無一人。有沒有人舉一個查詢聯系人然后加載照片的例子?因此,給定一個contactUri來自活動結果,該結果稱為usingstartActivityForResult(new Intent(Intent.ACTION_PICK,ContactsContract.CommonDataKinds.Phone.CONTENT_URI),PICK_CONTACT_REQUEST) 是:內容://com.android.contacts/data/1557loadContact(..)正常工作。但是,當我調用getPhoto(...)方法時,我得到的照片InputStream為空值。這也令人困惑,因為URI值不同。contactPhotoUri評估為:內容://com.android.contacts/contacts/1557請參閱以下代碼中的內聯注釋。 class ContactAccessor { /** * Retrieves the contact information. */ public ContactInfo loadContact(ContentResolver contentResolver, Uri contactUri) { //contactUri --> content://com.android.contacts/data/1557 ContactInfo contactInfo = new ContactInfo(); // Load the display name for the specified person Cursor cursor = contentResolver.query(contactUri, new String[]{Contacts._ID, Contacts.DISPLAY_NAME, Phone.NUMBER, Contacts.PHOTO_ID}, null, null, null); try { if (cursor.moveToFirst()) { contactInfo.setId(cursor.getLong(0)); contactInfo.setDisplayName(cursor.getString(1)); contactInfo.setPhoneNumber(cursor.getString(2)); } } finally { cursor.close(); } return contactInfo; // <-- returns info for contact }顯然,我在這里做錯了,但我似乎無法弄清楚問題出在哪里。謝謝。
3 回答
揚帆大魚
TA貢獻1799條經驗 獲得超9個贊
這對我有用:
public static Bitmap loadContactPhoto(ContentResolver cr, long id) {
Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, id);
InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, uri);
if (input == null) {
return null;
}
return BitmapFactory.decodeStream(input);
}
- 3 回答
- 0 關注
- 411 瀏覽
添加回答
舉報
0/150
提交
取消
