如何从URI加载Picasa图片?

时间:2013-03-11 03:16:02

标签: android android-intent android-contentprovider picasa android-contentresolver

我正在使用ACTION_PICK意图从图库中选择图片。某些相册(如“帖子”“个人资料照片”等)都标有Picasa图标。对于来自此类相册的图片,我得到一个类似于此的URI:

content://com.google.android.gallery3d.provider/picasa/item/5769844615871490082

我可以使用ContentResolverBitmapFactory从此URI加载图片,没有任何问题:

final InputStream ist = context.getContentResolver().openInputStream(intent.getData());
final Bitmap bitmap = BitmapFactory.decodeStream(ist);

但是在重新启动应用程序后,我无法使用存储的URI加载图像。我在调用decodeStream()时得到了这个:

03-11 12:34:56.502: A/libc(1172): Fatal signal 11 (SIGSEGV) at 0x00000408 (code=1), thread 1462 03-11 12:34:56.502:
    W/ActivityManager(478): Permission Denial: opening provider
    com.android.gallery3d.provider.GalleryProvider from
    ProcessRecord{41cdd220 1172:com.mycompany.myapp/u0a10085}
    (pid=1172, uid=10085) requires
    com.google.android.gallery3d.permission.GALLERY_PROVIDER or
    com.google.android.gallery3d.permission.GALLERY_PROVIDER

我尝试添加

<uses-permission android:name="com.google.android.gallery3d.permission.GALLERY_PROVIDER"/>

到清单文件但没有帮助。

我认为我的问题类似于this one,但没有给出解决方案,只有一种解决方法。是否可以请求访问存储的URI的权限?

1 个答案:

答案 0 :(得分:4)

尝试像这样打开输入流

ContentResolver res = context.getContentResolver();
Uri uri = Uri.parse(intent.getData().toString());
res.openInputStream(uri);