FileUriExposedException à l'aide de l'Androïde 7 de
Quand j'essaie de capturer une image que j'ai cette erreur :
EXCEPTION FATALE: principal
android.os.FileUriExposedException:
file:///storage/emulated/0/fname_1498727381241.jpg exposé au-delà de l'app
par ClipData.De l'élément.getUri()
au android.os.StrictMode.onFileUriExposed(StrictMode.java:1799)
au android.net.Uri.checkFileUriExposed(Uri.java:2346)
au android.contenu.ClipData.prepareToLeaveProcess(ClipData.java:835)
au android.contenu.L'intention.prepareToLeaveProcess(Intention.java:9514)
au android.contenu.L'intention.prepareToLeaveProcess(Intention.java:9499)
au
android.app.L'Instrumentation.execStartActivity(Instrumentation.java:1525)
au android.app.De l'activité.startActivityForResult(l'Activité.java:4403)
au android.app.De l'activité.startActivityForResult(l'Activité.java:4362)
au
opteamit.com.belami.CommuniquerPartagerPhotosActivity$1.onClick(CommuniquerPartagerPhotosActivity.java:46)
au android.vue.Vue.performClick(point de Vue.java:6261)
au android.vue.Afficher$PerformClick.exécuter(point de Vue.java:23752)
au android.os.Gestionnaire d'.handleCallback(Handler.java:751)
au android.os.Gestionnaire d'.dispatchMessage(Handler.java:95)
au android.os.Looper.boucle(Looper.java:154)
au android.app.ActivityThread.principale(ActivityThread.java:6776)
à java.lang.de réfléchir.La méthode.invoke(Native method)
au
com.android.interne.os.ZygoteInit$MethodAndArgsCaller.exécuter(ZygoteInit.java:1496)
au com.android.interne.os.ZygoteInit.principale(ZygoteInit.java:1386)
Il travaillait avant, mais il semble que le problème, c'est depuis que j'utilise de l'Androïde 7 de l'API (24).
C'est mon code :
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
imageUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "fname_" +
String.valueOf(System.currentTimeMillis()) + ".jpg"));
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
OriginalL'auteur Jéwôm' | 2017-06-29
Vous devez vous connecter pour publier un commentaire.
Trouver de discussion ici
Depuis Android 7, nous n'utilisons pas de fichier: schéma d'uri pour l'intention, vous devez utiliser FileProvider.
OriginalL'auteur Juvi
Bien, la bonne façon de le faire est par l'utilisation de
FileProvider
(comme mentionné dans developer). Mais j'ai trouvé une coquine façon de le faire sans ajouterFileProvider
. C'est évidemment une solution de contournement, mais il fonctionne.Dans votre Activité, ajoutez les lignes suivantes:
Ce sera tout simplement ignorer l'URI de l'exposition et vous obtiendrez l'accès.
Oui, je sais que ce n'est pas la meilleure pratique. Mais je voulais juste offrir une solution de rechange.
Encore, la méthode recommandée est d'utiliser
FileProvider
.Grand bro.. tq tellement
OriginalL'auteur Tushar Gogna