Mitesh Makwana Ответов: 1

Как получить разрешение на чтение uri при повторной попытке uri из общих предпочтений в android?


я пытаюсь получить изображение, но оно не работает, если я перезапущу свое приложение

я получаю эту ошибку

E/path: getRealPathFromURI исключение : java.lang.SecurityException: отказ в разрешении: открытие провайдера com.google.android.apps.photos.contentprovider.impl.MediaContentProvider из ProcessRecord{c3b0cec 9068:com.rayvatapps.launcher/u0a94} (pid=9068, uid=10094), который не экспортируется из UID 10066

E/BitmapFactory: невозможно декодировать поток: java.io.FileNotFoundException: / (разрешение отказано)

пожалуйста помогите мне любое предложение было бы полезно

Что я уже пробовал:

<pre>SharedPreferences sharedPreferences = getSharedPreferences("MyFile", 0);

String image = sharedPreferences.getString("image","");

if(!image.equals(""))

{

Uri path = Uri.parse(image);

if(!path.equals(""))

{

File f = new File(getRealPathFromURI(mContext,path));

Drawable d = Drawable.createFromPath(f.getAbsolutePath());

rlMain.setBackground(d);

}

}

метод
private String getRealPathFromURI(Context context, Uri contentUri) {

Cursor cursor = null;

try {

String[] proj = {
MediaStore.Images.Media.DATA };

cursor = context.getContentResolver().query(contentUri, proj, null, null, null);

int column_index = cursor.getColumnIndexOrThrow(
MediaStore.Images.Media.DATA);

cursor.moveToFirst();

return cursor.getString(column_index);

} catch (Exception e) {

Log.e("Path", "getRealPathFromURI Exception : " + e.toString());

return "";

} finally {

if (cursor != null) {

cursor.close();

}

}

}

David Crow

Похоже, вам может понадобиться использовать FileProvider. Видеть здесь и здесь.

Mitesh Makwana

спасибо за предложение, я воспользуюсь им в следующий раз.

1 Ответов

Рейтинг:
1

Mitesh Makwana

Я решаю свою проблему, сохраняя путь изображения вместо Uri изображения в общем предпочтении.