我在为Android中的联系人加载照片时遇到问题。我已经用谷歌搜索了一个答案,但到目前为止却空无一人。有没有人举一个查询联系人然后加载照片的例子?
因此,给定一个contactUri来自活动结果,该结果称为using
startActivityForResult(new Intent(Intent.ACTION_PICK,ContactsContract.CommonDataKinds.Phone.CONTENT_URI),PICK_CONTACT_REQUEST)
是:
内容://com.android.contacts/data/1557
loadContact(..)正常工作。但是,当我调用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
}
显然,我在这里做错了,但我似乎无法弄清楚问题出在哪里。谢谢。
扬帆大鱼
相关分类