相关疑难解决方法(0)

如何从URI加载Picasa图片?

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

content://com.google.android.gallery3d.provider/picasa/item/5769844615871490082
Run Code Online (Sandbox Code Playgroud)

我可以使用ContentResolver并且BitmapFactory没有问题从这个URI加载图像:

final InputStream ist = context.getContentResolver().openInputStream(intent.getData());
final Bitmap bitmap = BitmapFactory.decodeStream(ist);
Run Code Online (Sandbox Code Playgroud)

但是在重新启动应用程序后,我无法使用存储的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
Run Code Online (Sandbox Code Playgroud)

我试着补充一下

<uses-permission android:name="com.google.android.gallery3d.permission.GALLERY_PROVIDER"/>
Run Code Online (Sandbox Code Playgroud)

清单文件,但它没有帮助.

我认为我的问题类似于这个,但没有解决方案,只有一个解决方法.是否可以请求访问存储的URI的权限?

android picasa android-intent android-contentresolver android-contentprovider

12
推荐指数
1
解决办法
3164
查看次数

无法使用ACTION_PICK意图选择特定图像

我正在使用这样的意图:

Intent intent = new Intent(Intent.ACTION_PICK,
        android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI);
Run Code Online (Sandbox Code Playgroud)

onActivityResult()我有这个:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode != Activity.RESULT_OK) {
        return; // user cancelled
    }

    Uri imageUri = data.getData();
    if (imageUri == null) {
        // (code to show error message goes here)
    return;
    }

    // Get image path from media store
    String[] filePathColumn = { android.provider.MediaStore.MediaColumns.DATA };
    Cursor cursor = this.getContentResolver().query(imageUri, filePathColumn,
            null, null, null);

    if (cursor == null || !cursor.moveToFirst()) { …
Run Code Online (Sandbox Code Playgroud)

android android-intent

2
推荐指数
1
解决办法
5667
查看次数