Подтвердить что ты не робот

Как загрузить изображение Picasa из URI?

Я использую ACTION_PICK намерение выбрать изображение из галереи. Некоторые альбомы, такие как "Сообщения", "Фото профиля" и т.д., Отмечены значком Picasa. Для изображений из таких альбомов я получаю URI, подобный этому:

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

Я могу загрузить изображение из этого URI с помощью ContentResolver и BitmapFactory без проблем:

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"/>

в файл манифеста, но это не помогло.

Я думаю, что моя проблема похожа на на эту, но решения там нет, только обходной путь. Можно ли запросить разрешение на доступ к сохраненному URI?

4b9b3361

Ответ 1

Попробуйте открыть входной поток следующим образом

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