gpt4 book ai didi

android - 使用 Universal Image Loader 加载联系人照片

转载 作者:太空狗 更新时间:2023-10-29 14:55:01 28 4
gpt4 key购买 nike

我正在使用 Uri 加载联系方式:

Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_FILTER_URI, Uri.encode(mCurFilter))

一切正常,直到我尝试使用 Universal Image Loader 加载联系人照片 ContactsContract.Contacts.PHOTO_URI

ImageLoader.getInstance().displayImage(photoUri, mImageview);

我从联系人那里得到的照片 Uri 是这样的格式:

content://com.android.contacts/display_photo/2486

但 UIL 无法加载此图像并指出此错误:

java.lang.IllegalArgumentException: URI: content://com.android.contacts/display_photo/2486/photo,
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:167)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137)
at android.content.ContentProviderProxy.query(ContentProviderNative.java:421)
at android.content.ContentResolver.query(ContentResolver.java:478)
at android.content.ContentResolver.query(ContentResolver.java:422)
at android.provider.ContactsContract$Contacts.openContactPhotoInputStream(ContactsContract.java:2016)
at com.nostra13.universalimageloader.core.download.BaseImageDownloader.getContactPhotoStream(BaseImageDownloader.java:232)
at com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStreamFromContent(BaseImageDownloader.java:222)
at com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStream(BaseImageDownloader.java:92)
at com.nostra13.universalimageloader.core.decode.BaseImageDecoder.getImageStream(BaseImageDecoder.java:98)
at com.nostra13.universalimageloader.core.decode.BaseImageDecoder.decode(BaseImageDecoder.java:74)
at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.decodeImage(LoadAndDisplayImageTask.java:265)
at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:238)
at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:136)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)

我在 UIL 中寻找 Uri 格式,但找不到对此类 Uri 的支持:

Acceptable URIs examples

最佳答案

我认为这是 Android-Universal-Image-Loader 低于 1.9.2 版本的问题,已在此处报告 UIL unable to load image when source is PHOTO_URI of contact

所以根据Nostra13 ,如果您使用旧的通用图像加载器,您可以尝试扩展 BaseImageDownloader 并覆盖图像加载器类中的 getStreamFromContent(...) 方法:

@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);
}
}

此问题已在 Android-Universal-Image-Loader 1.9.2 中修复这样你就可以download最新的并在加载联系人图像时使用它

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

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com