Exception Android: java.io.IOException: open failed: EACCES (Permission refusée) [dupliquer]
cette question a déjà une réponse ici:
Pour une raison étrange, je suis constamment confronté à un problème avec différents types d'appareils Android pour enregistrer les images capturées sur l'appareil stockage.
ici, est le journal d'erreur détaillé, de quoi, en fait je reçois.
java.io.IOException: open failed: EACCES (Permission denied)
at java.io.File.createNewFile(File.java:940)
at com.parkhya.pick_for_shareAflash.HomeActivity.resizeImage(HomeActivity.java:456)
at com.parkhya.pick_for_shareAflash.HomeActivity.onActivityResult(HomeActivity.java:393)
Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied)
at java.io.File.createNewFile(File.java:933)
bien que, toutes les autres applications Android, comme Instagram et d'autres, sont en mesure de sauvegarder la caméra a cliqué sur les images sur les appareils. N'importe qui, Pouvez-vous s'il vous plaît suggérer, ce que je dois faire, afin de mon application, pour enregistrer les photos de l'appareil photo dans sdcard.
4 réponses
veuillez ajouter la permission Pour permet à une application d'écrire à un stockage externe.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
permet à une application de lire à partir d'un stockage externe.
toute application qui déclare la permission WRITE_EXTERNAL_STORAGE est implicitement autorisée.
cette permission est obligatoire à partir du niveau 19 de L'API. Avant le niveau 19 de L'API, Cette permission n'est pas appliquée et toutes les applications ont encore accès à lire depuis de stockage externe. Vous pouvez tester votre application avec la permission imposée en activant le stockage USB Protect sous les options du développeur dans L'application Paramètres sur un appareil fonctionnant sous Android 4.1 ou plus.
Cela peut vous aider. Je fais face au même problème en écrivant le fichier sur sdcard. J'ai défini toutes les permissions nécessaires pour écrire le fichier mais j'ai utilisé l'objet fichier comme ci-dessous:
Mauvais:
File myFile = new File(Environment.getExternalStorageDirectory().getAbsoluteFile()+fileName);
Correct:
File myFile = new File(Environment.getExternalStorageDirectory().getAbsoluteFile(), fileName);
ça veut dire que le chemin était mauvais.
Solution ce que je trouve est
éditer l'émulateur 1. allez sur android virtual device manager puis éditez l'émulateur 2. définir dire 100 Mo pour la carte Sd pour l'émulateur respecté et dire Ok 3. enregistrer et fermer l'émulateur et démarrer 4. le chemin enregistré est le suivant: cliquez sur DDMS mnt / sdcard/votrefilename il a fonctionné pour moi l'application ne donne pas D'erreur et fonctionne
notez le piège suivant: Quelqu'un d'autre a écrit
<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>
dans AndroidManifest.XML. Je voulais sauver des dossiers et ai ajouté la ligne mentionnée et a obtenu
<uses-permission android:name="android.permission.INTERNET" >
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</uses-permission>
qui est une mauvaise syntaxe. Il devrait être
<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
ou
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />