Leer com.google.android.apps.photos.contentprovider.MediaContentProvider requiere que el proveedor se exporte o grantUriPermission ()
Recibí este informe de error de un usuario de Android 6.0.1:
STACK_TRACE=java.lang.SecurityException: Permission Denial: reading com.google.android.apps.photos.contentprovider.MediaContentProvider uri content://com.google.android.apps.photos.contentprovider/0/1/content%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F19181/ORIGINAL/NONE/443149508 from pid=18891, uid=10128 requires the provider be exported, or grantUriPermission() at android.os.Parcel.readException(Parcel.java:1620) at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183) at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:146) at android.content.ContentProviderProxy.openTypedAssetFile(ContentProviderNative.java:692) at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1104) at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:942) at android.content.ContentResolver.openInputStream(ContentResolver.java:662) at fr.free.nrw.commons.upload.UploadService.uploadContribution(UploadService.java:176) at fr.free.nrw.commons.upload.UploadService.handle(UploadService.java:114) at fr.free.nrw.commons.upload.UploadService.handle(UploadService.java:27) at fr.free.nrw.commons.HandlerService$ServiceHandler.handleMessage(HandlerService.java:19) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.os.HandlerThread.run(HandlerThread.java:61)
De mirar a su alrededor, parece que esto está relacionado con el permiso de Google Fotos, com.google.android.apps.photos.permission.GOOGLE_PHOTOS
. Ya tengo este permiso en mi manifiesto, pero este usuario está ejecutando API 23, que requiere permisos de tiempo de ejecución.
- ¿Para qué se utilizan los indicadores de protección "appop" y "development"?
- ¿Cómo detectar llamadas entrantes, en un dispositivo Android?
- Permiso de micrófono
- ¿Qué es <permission-tree> en android manifest? ¿Cómo hacer uso de esto?
- ¿Cuál es la diferencia entre android: uses-permission y uses-permission?
El problema es, ¿cómo puedo llamar al permiso de ejecución para esto? Sé cómo hacerlo para los permisos estándar como se describe en https://developer.android.com/training/permissions/requesting.html#perm-check , pero cuando intento hacer
ActivityCompat.requestPermissions(thisActivity, new String[]{com.google.android.apps.photos.permission.GOOGLE_PHOTOS},
no compila.
¿Cuál es el nombre del permiso que necesito solicitar en tiempo de ejecución para poder acceder a una imagen de Google Fotos?
- Solicitar permisos de Android M de la actividad con noHistory = "true" y / o showOnLockScreen = "true"
- Solicitud de permiso de cámara con Android SDK 23
- El permiso de vibración sólo se requiere en algunos dispositivos
- Android M Permisos: onRequestPermissionsResult () no se llama
- No se encuentra Symbol Manifest.permission.WRITE_EXTERNAL_STORAGE en la v23
- ¿Cómo manejar las solicitudes de permisos fuera de Actividad y Fragmento?
- Cómo activar mediante programación el inicio automático en los dispositivos Lenovo y ¿Cómo encontrar qué teléfono necesita hacer el código de inicio automático?
- Error básico en AndroidManifest.xml para recibir permiso de SMS
En realidad, no necesita ningún permiso. Esto es una excepción de seguridad.
Esa es la condición simple: Cuando solicitas una aplicación de fotos de Google mediante la intención ACTION_PICK, después de recibir tu foto, recibes un permiso del proveedor. Si procesa este código en otro contexto, el sistema lanzará una excepción de seguridad. Porque otro contexto no está autorizado.
Su código de solicitud como este:
Intent galleryIntent = new Intent(Intent.ACTION_PICK); galleryIntent.setType("image/*, video/*"); if (galleryIntent.resolveActivity(getPackageManager()) != null) { startActivityForResult(Intent.createChooser(galleryIntent, "Select File"), RESULT_CODE); }
@ respuesta de Bluemist muy explicativo: https://stackoverflow.com/a/30909105/1136117
- Conexión de Https con conexión cerrada por peer en Android 6.0
- Android – Valor de texto condicional utilizando Vinculación de datos