java - 使用 Universal Image Loader 加载联系人的 PHOTO_URI

标签 java android gridview lazy-loading universal-image-loader

现在我遇到了一些问题:

05-14 16:20:59.355: D/ImageLoader(31397): Start display image task [content://com.android.contacts/contacts/281/photo_120x120] 05-14 16:20:59.360: D/ImageLoader(31397): Load image from network [content://com.android.contacts/contacts/281/photo_120x120] 05-14 16:20:59.360: D/ImageLoader(31397): Cache image on disk [content://com.android.contacts/contacts/281/photo_120x120]

05-14 16:20:59.445: E/ImageLoader(31397): URI: content://com.android.contacts/contacts/281/photo/photo 05-14 16:20:59.445: E/ImageLoader(31397): java.lang.IllegalArgumentException: URI: content://com.android.contacts/contacts/281/photo/photo 05-14 16:20:59.445: E/ImageLoader(31397): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:167) 05-14 16:20:59.445: E/ImageLoader(31397): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137) 05-14 16:20:59.445: E/ImageLoader(31397): at android.content.ContentProviderProxy.query(ContentProviderNative.java:385) 05-14 16:20:59.445: E/ImageLoader(31397): at android.content.ContentResolver.query(ContentResolver.java:417) 05-14 16:20:59.445: E/ImageLoader(31397): at android.content.ContentResolver.query(ContentResolver.java:360) 05-14 16:20:59.445: E/ImageLoader(31397): at android.provider.ContactsContract$Contacts.openContactPhotoInputStream(ContactsContract.java:1982) 05-14 16:20:59.445: E/ImageLoader(31397): at android.provider.ContactsContract$Contacts.openContactPhotoInputStream(ContactsContract.java:2013) 05-14 16:20:59.445: E/ImageLoader(31397): at com.view.widget.ContactDownloader.getStreamFromContent(ContactDownloader.java:26) 05-14 16:20:59.445: E/ImageLoader(31397): at com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStream(BaseImageDownloader.java:88) 05-14 16:20:59.445: E/ImageLoader(31397): at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.downloadImage(LoadAndDisplayImageTask.java:290) 05-14 16:20:59.445: E/ImageLoader(31397): at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryCacheImageOnDisk(LoadAndDisplayImageTask.java:273) 05-14 16:20:59.445: E/ImageLoader(31397): at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:229) 05-14 16:20:59.445: E/ImageLoader(31397): at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:135) 05-14 16:20:59.445: E/ImageLoader(31397): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 05-14 16:20:59.445: E/ImageLoader(31397): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 05-14 16:20:59.445: E/ImageLoader(31397): at java.lang.Thread.run(Thread.java:841)

我尝试扩展 BaseImageDownloader 并覆盖 issue 564 中的 getStreamFromContent(...) 方法: https://github.com/nostra13/Android-Universal-Image-Loader/issues/564 同样:

@Override
protected InputStream getStreamFromContent(String imageUri, Object extra) throws FileNotFoundException {
        ContentResolver res = context.getContentResolver();
        Uri uri = Uri.parse(imageUri);
        if (imageUri.startsWith("content://com.android.contacts/")) {
            return ContactsContract.Contacts.openContactPhotoInputStream(res, uri);
        } else {
            return res.openInputStream(uri);
        }
    }

但没有成功。

请帮帮我。

感谢和问候

最佳答案

我认为您遇到了此处描述(并解决)的问题:Load Contact Image Into Bitmap .作为引用,解决方案是将联系人本身的 URI 传递给 openContactPhotoInputStream(),而不是联系人照片的 URI。

关于java - 使用 Universal Image Loader 加载联系人的 PHOTO_URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23686203/

相关文章:

java - android 适配器 Onclick 打开新 Activity

c# - 在回发问题上使用 javascript 在 gridview 中选择全部

java - java封装的要点

java - 如何管理多个 Android 库项目的公共(public)依赖项?

java - OpenCV 3.0.0 FaceDetect 样本失败

android - 为什么在 CoordinatorLayout 中布局约束不起作用

c# - 如何从 C# 更改 GridView 中列的格式

asp.net - 单击 GridView 行上的任意位置即可进入编辑模式

java - 关于合并算法的问题

browser - 嵌入在浏览器中的Applet嵌入在JFrame中