web-dev-qa-db-fra.com

Exception Android: Java.io.IOException: échec de l'ouverture: EACCES (autorisation refusée)

Pour une raison étrange, je suis constamment confronté à un problème avec différents types d'appareils Android, pour l'enregistrement des images capturées sur le stockage de l'appareil.

Voici le journal des erreurs détaillé de ce que je reçois réellement.

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, soient capables de sauvegarder les images sur lesquelles la caméra a cliqué sur les appareils ..__ images de la caméra en sdcard.

24
srsmohit

veuillez ajouter l'autorisation pour Permet à une application d'écrire sur un stockage externe.

<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE"/>

Permet à une application de lire à partir d'un stockage externe.

Cette application est implicitement accordée à toute application qui déclare l'autorisation WRITE_EXTERNAL_STORAGE.

Cette autorisation est appliquée à partir du niveau 19 de l'API. Avant le niveau 19 de l'API, cette autorisation n'est pas appliquée et toutes les applications ont toujours accès à la lecture depuis le stockage externe. Vous pouvez tester votre application avec l'autorisation mise en œuvre en activant Protéger le stockage USB sous Options du développeur dans l'application Paramètres sur un appareil fonctionnant sous Android 4.1 ou version ultérieure.

22
Jitesh Upadhyay

Cela peut vous aider. Je suis confronté au même problème lors de l'écriture du fichier sur la carte SD. J'ai défini toutes les autorisations requises pour écrire le fichier mais j'ai utilisé l'objet fichier comme ci-dessous:

Faux:

File myFile = new File(Environment.getExternalStorageDirectory().getAbsoluteFile()+fileName);

Correct:

File myFile = new File(Environment.getExternalStorageDirectory().getAbsoluteFile(), fileName);

Cela signifie que le chemin était mauvais.

21
Smeet

Solution ce que je trouve est 

éditer l’émulateur 1. Accédez au gestionnaire de périphériques virtuels Android, puis modifiez l'émulateur 2. définissez 100 Mo pour la carte Sd pour l’émulateur respecté et dites Ok 3. enregistrer et fermer l’émulateur et démarrer 4. chemin enregistré est cliquez sur DDMS mnt/sdcard/votrenomfichier .__ 

0
madmaskd