【问题标题】:Android - Weird Contact pic issue in KitkatAndroid - Kitkat 中的奇怪联系人图片问题
【发布时间】:2014-05-28 01:14:56
【问题描述】:

因此,在我正在构建的应用程序中,我获取手机中的所有联系人并将其显示在列表视图中。一切正常,直到我将手机(HTC One)从 4.1.2 升级到 4.4.2。我不再获取联系人的图像/个人资料照片,而是引发 FileNotFoundException。此外,这仅发生在少数联系人而不是全部联系人身上。我能够从几个联系人那里得到照片,但有几个人失败了。同一段代码在运行 4.4.2 的 Nexus 5 上运行良好。

这是我用于查询联系人的代码:

 ContentResolver cr = getActivity().getContentResolver();

     String[] projection    = new String[] {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
                     ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.PHOTO_URI, 
                     ContactsContract.CommonDataKinds.Phone.PHOTO_THUMBNAIL_URI, ContactsContract.CommonDataKinds.Phone.CONTACT_ID};

     String SELECTION =
                (ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY) +
                "<>''" + " AND " + Contacts.IN_VISIBLE_GROUP + "=1";

     String sortBy = ContactsContract.Contacts.DISPLAY_NAME
                + " COLLATE LOCALIZED ASC";

     Cursor people = cr.query(uri, projection, SELECTION + " AND " + ContactsContract.CommonDataKinds.Phone.HAS_PHONE_NUMBER
             + "=1", null, sortBy);

我得到的 logcat 错误是:

System.out(17898): resolveUri failed on bad bitmap uri: content://com.android.contacts/contacts/289/photo
ImageView(17898): Unable to open content: content://com.android.contacts/contacts/289/photo
ImageView(17898): java.io.FileNotFoundException: content://com.android.contacts/contacts/289/photo?restricted=true
ImageView(17898):   at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:146)
ImageView(17898):   at android.content.ContentProviderProxy.openTypedAssetFile(ContentProviderNative.java:737)

关于可能是什么问题的任何想法?有什么建议吗?

提前致谢

编辑:我构建了一个名为 Contact 的自定义对象,其中包含所有详细信息,并将其设置为自定义适配器。这是我在图像视图中设置照片的代码,尽管我认为这不相关:

 if(contact != null){
        viewHolder.contactName.setText(contact.getName());
        if(contact.getThumbUri() != null){
            viewHolder.contactThumb.setImageURI(Uri.parse(contact.getThumbUri()));
        }else{
            viewHolder.contactThumb.setImageResource(R.drawable.ic_launcher);
        }
        if(contact.isTlknUser()){
            isTlkn[position] = true;
        }
    }

【问题讨论】:

  • 这个问题的答案 (stackoverflow.com/questions/19836455/…) 有帮助吗?您能否发布用于从 URI 实际加载图片的代码?
  • @Paul-Jan 显然没有。我只是在 getView 中使用 setImageURI 方法来设置缩略图。

标签: android contacts android-4.4-kitkat


【解决方案1】:

我想这是一个特定的构建问题,因为一旦我刷新了不同的 ROM,这个问题就会自动解决。仍然不知道问题出在哪里,但是是的,因为它在另一个 ROM 上运行良好,我假设它只是 Kitkat 或其他受此影响的 OEM 的特定版本。

【讨论】:

  • 你能发布你遇到这个问题的ROM吗?在 HTC One M7 4.4.3 Android Revolution HD 上处理一个非常相似的问题,但不确定这是否是特定于设备/ROM 的问题,或者是否有更好的方法来访问照片。
  • 我在 Insertcoin ROM 上。刷一个不同的ROM解决了这个问题。不知道是什么问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-14
  • 2014-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多