Исключение безопасности при запуске моего приложения?

Я работаю над приложением, которое хранит импортированные фотографии в базе данных комнаты, и все они затем отображаются в приложении. Все работает нормально, когда я импортирую свое первое изображение, но затем, когда я перезапускаю, это приводит к этому SecurityException, где я использую AsyncTask для доступа ко всем сохраненным фотографиям в базе данных комнаты.

Ошибка не возникает на моем телефоне, но она возникает на симулированном устройстве и моем запасном телефоне, и я не уверен, в чем причина этого.

У меня вопрос: почему возникает эта ошибка и как ее исправить? Я испробовал большинство исправлений для SecurityException, которые я видел в StackOverflow, но ни одно из них не работает.

Весь соответствующий код приведен ниже:

Трассировки стека:

java.lang.SecurityException: Permission Denial: opening provider com.google.android.apps.photos.contentprovider.impl.MediaContentProvider from ProcessRecord{47792f1 13877:com.example.oskilla.geophotoapp/u0a91} (pid=13877, uid=10091) that is not exported from UID 10075
        at android.os.Parcel.createException(Parcel.java:1942)
        at android.os.Parcel.readException(Parcel.java:1910)
        at android.os.Parcel.readException(Parcel.java:1860)
        at android.app.IActivityManager$Stub$Proxy.getContentProvider(IActivityManager.java:4181)
        at android.app.ActivityThread.acquireProvider(ActivityThread.java:5970)
        at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2592)
        at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1828)
        at android.content.ContentResolver.query(ContentResolver.java:786)
        at android.content.ContentResolver.query(ContentResolver.java:752)
        at android.content.ContentResolver.query(ContentResolver.java:710)
        at com.example.oskilla.geophotoapp.BitmapBuilder.createBitmap(BitmapBuilder.java:33)
        at com.example.oskilla.geophotoapp.MapsActivity$FindPhotos.onPostExecute(MapsActivity.java:147)
        at com.example.oskilla.geophotoapp.MapsActivity$FindPhotos.onPostExecute(MapsActivity.java:108)
        at android.os.AsyncTask.finish(AsyncTask.java:695)
        at android.os.AsyncTask.access$600(AsyncTask.java:180)
        at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:712)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: android.os.RemoteException: Remote stack trace:
        at com.android.server.am.ActivityManagerService.getContentProviderImpl(ActivityManagerService.java:12188)
        at com.android.server.am.ActivityManagerService.getContentProvider(ActivityManagerService.java:12585)
        at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:357)
        at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3291)
        at android.os.Binder.execTransact(Binder.java:731)

Рассматриваемая область кода (не удалось получить курсор):

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

Cursor cursor = context.getContentResolver().query(photoUri, FILE, null, null, null);

cursor.moveToFirst();

int columnIndex = cursor.getColumnIndex(FILE[0]);
String ImageDecode = cursor.getString(columnIndex);
cursor.close();

bitmap = BitmapFactory.decodeFile(ImageDecode);

Код, который вызывает приведенный выше код (createBitmap):

    for(PhotoEntity photo : photoEntities) {
                System.out.println(photo.getImageLocation());
                Uri bitmapUri = photo.getImageLocation();
                System.out.println(bitmapUri.getPath() + " this is from findphotos");

                Bitmap bitmap = BitmapBuilder.createBitmap(context, bitmapUri);

                bitmap = BitmapBuilder.getBitmap(bitmap,
                        ExifConverter.getRealPathFromUri(context, photo.getImageLocation()), 200, 200);
}

Вся помощь приветствуется. Спасибо


comment
Проверьте эту ссылку.   -  person Surender Kumar    schedule 06.12.2018
comment
@SurenderKumar это сработало!! большое спасибо хаха!! Я просмотрел этот пост ранее, но немного потерялся. еще раз спасибо :) раньше я был в тупике, потому что у меня не было никаких намерений в проблемной области. только что понял, что проблема была в импорте картинок..   -  person Oskilla    schedule 06.12.2018


Ответы (1)


Вам нужно добавить это разрешение в файл манифеста

<uses-permission android:name="com.google.android.apps.photos.permission.GOOGLE_PHOTOS"/>`
person Dhanshri    schedule 06.12.2018