我在获取和设置联系人图像作为视图背景时遇到问题,令人惊讶的是,很少有关于如何做到这一点的示例。我正在尝试构建类似于显示大联系人照片的 People 应用程序的东西。
这就是我现在正在做的事情:
Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long.valueOf(id));
InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(context.getContentResolver(), uri);
Bitmap bm = BitmapFactory.decodeStream(input);
Drawable d = new BitmapDrawable(bm);
button.setBackgroundDrawable(drawable);
这可行,但是它使用的 URI 获取缩略图,因此即使有一张大照片图像在缩放以适合 imageView 时看起来也很糟糕。我知道另一种获取实际获取大照片的 URI 的方法是:
final Uri imageUri = Uri.parse(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.PHOTO_URI)));
但是我还没有设法将它放到 imageView 中,也许上面的代码可以适应使用第二个 uri。如果您知道如何使用第二个 uri,或者如果有比通过 URI 更简单的方法来获取联系人图像,请告诉我。任何信息将不胜感激。