【问题标题】:unable to load contact photo android无法加载联系人照片android
【发布时间】:2013-12-22 04:05:16
【问题描述】:

听起来很奇怪,但我无法从 Android 联系人中加载联系人照片。我尝试了很多代码,但没有任何效果。我的清单很好,添加了权限。累了很多代码,包括来自 Android.com 的这个代码。它也没有工作:

Cursor managedCursor = context.getContentResolver().query(
                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                    new String[] { ContactsContract.Contacts._ID,
                            Phone.DISPLAY_NAME, Phone.NUMBER, Phone.PHOTO_ID },
                    null, null, Phone.DISPLAY_NAME + " ASC");
            Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI,
                    contactId);
            Uri photoUri = Uri.withAppendedPath(contactUri,
                    Contacts.Photo.CONTENT_DIRECTORY);

            Cursor cursor = getContentResolver()
                    .query(photoUri,new String[] { acts.Photo.PH.CommonDataKinds.Photo.PHOTO },
                        null, null, null);
        if (cursor == null) {
            return null;
 }
        try {
            return getContentResolver().openInputStream(photoUri);
            // if (cursor.moveToFirst()) {
            // byte[] data = cursor.getBlob(0);
            // if (data != null) {
            // return new ByteArrayInputStream(data);
            // }
            // }
        } catch (Exception ex) {
            ex.printStackTrace();
        }

我正在使用 Kitkat 在 Google Nexus 4 中进行测试。任何人都可以帮忙吗?

【问题讨论】:

  • 任何异常抛出? logcat 输出?
  • 输入流返回空值。如果你对 iv.setImageUri(uri) 使用 uri,它总是说找不到文件。
  • 您是否尝试过我在下面指出的解决方案?

标签: android photo android-contacts


【解决方案1】:

使用ContactsContract.Contacts.CONTENT_URI 而不是Contacts.CONTENT_URI 来获取联系人uri。根据这个reference pageContacts.CONTENT_URI 已被弃用。

另外,看看这些:

Example Code 1

Example Code 2

【讨论】:

  • 谢谢桑吉夫。它有效,示例 1。我使用的是:ContactsContract.Contacts._ID;而不是 ContactsContract.CommonDataKinds.Phone.CONTACT_ID;
猜你喜欢
  • 1970-01-01
  • 2011-01-23
  • 1970-01-01
  • 2013-03-30
  • 1970-01-01
  • 1970-01-01
  • 2014-12-08
  • 1970-01-01
  • 2014-10-23
相关资源
最近更新 更多