我正在尝试使用联系人ID获取联系人图片。
这是我的代码: -
public Bitmap getDisplayPhoto(Long id)
{
Uri uri = ContentUris.withAppendedId(Contacts.CONTENT_URI,id);
InputStream input = Contacts.openContactPhotoInputStream(this.getContentResolver(), uri);
if (input == null)
{
return null;
}
return BitmapFactory.decodeStream(input);
}
此代码为我的所有联系人返回null,包括那些有图片的联系人。
我在这里做错了什么?
请帮助!!
感谢。
答案 0 :(得分:4)
您的联系人是否已从Facebook同步?因为那些似乎无法访问。
如果情况并非如此,您可以尝试这样做:
InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(this.getContentResolver(), uri);
不确定您是否有ContactsContract
的导入。
答案 1 :(得分:2)
您可以使用以下代码加载联系人的照片。
Cursor c = getContentResolver().query(People.CONTENT_URI, new String[] { People._ID, People.NAME }, null, null, null);
int idCol = c.getColumnIndex(People._ID);
long id = c.getLong(idCol);
Uri uri = ContentUris.withAppendedId(People.CONTENT_URI, id);
Bitmap bitmap = People.loadContactPhoto(context, uri, R.drawable.icon, null);
否则 您可以看到以下网址
由于 迪帕克
答案 2 :(得分:0)
您可以使用此代码获取android联系人数据库表中的照片: 首先获取联系人ID。
long _id = Long.parseLong(id);
Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, _id);
InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, uri);
if(input!=null){
flag=true;
Bitmap bitmap=BitmapFactory.decodeStream(input);
ImageView image=(ImageView)findViewById(R.id.imageView1);
image.setImageBitmap(bitmap);
}