SecurityException, когда приложение пытается использовать Google Photos, чтобы обрезать снимок

Мое приложение успешно сняло фотографию с камеры, а затем перенаправило пользователя во всплывающий список, содержащий доступные приложения, которые могут обрезать фотографию, как показано ниже:

Intent intent = new Intent("com.android.camera.action.CROP");
intent.setType("image/*");

List<ResolveInfo> list = mActivity.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);

Когда пользователь выбирает опцию Google Фото, он получает это исключение:

Fatal Exception: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=66990, result=-1, data=Intent { dat=content://com.google.android.apps.photos.contentprovider/0/1/content://media/external/images/media/6519/ORIGINAL/NONE/2122203960 flg=0x1 launchParam=MultiScreenLaunchParams { mDisplayId=0 mFlags=0 } clip={text/uri-list U:content://com.google.android.apps.photos.contentprovider/0/1/content%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F6519/ORIGINAL/NONE/2122203960} }} to activity {com.turkcell.android.ccsimobile/com.turkcell.android.ccsimobile.HomeActivity}: java.lang.SecurityException: Uid 10050 does not have permission to uri 0 @ content://com.google.android.apps.photos.contentprovider/0/1/content%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F6519/ORIGINAL/NONE/2122203960
   at android.app.ActivityThread.deliverResults(ActivityThread.java:4472)
   at android.app.ActivityThread.handleSendResult(ActivityThread.java:4515)
   at android.app.ActivityThread.-wrap22(ActivityThread.java)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1687)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:154)
   at android.app.ActivityThread.main(ActivityThread.java:6682)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
Caused by java.lang.SecurityException: Uid 10050 does not have permission to uri 0 @ content://com.google.android.apps.photos.contentprovider/0/1/content%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F6519/ORIGINAL/NONE/2122203960
   at android.os.Parcel.readException(Parcel.java:1693)
   at android.os.Parcel.readException(Parcel.java:1646)
   at android.app.ActivityManagerProxy.grantUriPermission(ActivityManagerNative.java:5763)
   at android.app.ContextImpl.grantUriPermission(ContextImpl.java:1744)
   at android.content.ContextWrapper.grantUriPermission(ContextWrapper.java:764)

на этой линии:

getContext().grantUriPermission(packageName, mSelectedImage, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);

Эта строка используется в цикле, чтобы дать разрешение для каждого доступного приложения, показанного для опции обрезки:

    for (ResolveInfo res : list) {
        String packageName = res.activityInfo.packageName;
        getContext().grantUriPermission(packageName, mSelectedImage, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
           ... 
           ...   
    }

Исключение говорит, что не имеет разрешения, но я уже использовал метод grantPermission() для него.

Примечание: mSelectedImage - это uri фотографии, сделанной камерой.

0 ответов

Другие вопросы по тегам