2014-01-18 11 views
24

Aus irgendeinem seltsamen Grund, stehe ständig ein Problem mit verschiedenen Arten von Android-Geräten, zum Speichern der aufgenommenen Bilder auf dem Gerätespeicher.Android-Ausnahme: java.io.IOException: Öffnen fehlgeschlagen: EACCES (Berechtigung verweigert)

Hier ist das detaillierte Fehlerprotokoll, von dem, was ich eigentlich bekomme.

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) 

Obwohl alle anderen Android Apps wie Instagram und andere, in der Lage sind, die Kamera speichern geklickt Bilder auf den Geräten. Kannst du mir bitte vorschlagen, was ich tun soll, um meine Kamera-Bilder in SD-Karte zu speichern.

+3

Haben Sie die Schreibberechtigung in die Manifestdatei hinzugefügt? –

Antwort

22

fügen Sie bitte die Berechtigung für eine Anwendung zum Schreiben auf externen Speicher hinzu.

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

Ermöglicht einer Anwendung, von externem Speicher zu lesen.

Jede App, die die Berechtigung WRITE_EXTERNAL_STORAGE deklariert, erhält implizit diese Berechtigung.

Diese Berechtigung wird ab API-Stufe 19 erzwungen. Vor API-Stufe 19 wird diese Berechtigung nicht erzwungen und alle Apps können weiterhin aus dem externen Speicher lesen. Sie können Ihre App mit der erzwungenen Berechtigung testen, indem Sie unter Entwickleroptionen in der App Einstellungen auf einem Gerät mit Android 4.1 oder höher die Option USB-Speicher schützen aktivieren.

0

Lösung, was ich finde, ist

bearbeiten Emulator 1. go virtuelle Geräte-Manager auf Android und dann der Emulator 2. Satz sagen 100 MB für SD-Karte für den angesehenen Emulator und sagen Ok 3 bearbeiten. speichern und schließen Emulator und starten 4. Pfad gespeichert ist klicken DDMS mnt/sdcard/yourfilename es funktionierte für mich die App nicht Fehler schenkt und arbeitet

-9

Beachten sie die folgende Falle: Jemand anderes

schrieb
<uses-permission android:name="android.permission.INTERNET" > 
</uses-permission> 

in AndroidManifest.xml. Ich wollte Dateien speichern und hinzugefügt, um die erwähnte Linie und bekam

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

die schlechte Syntax ist. Es sollte

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

oder

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
21

sein Dies kann Ihnen helfen. Ich habe das gleiche Problem beim Schreiben der Datei auf SD-Karte. Ich habe alle erforderliche Berechtigung gesetzt, die Datei zu schreiben, aber ich verwendet, um die Datei-Objekt wie folgt:

Falsch:

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

Richtig:

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

Das bedeutet, dass der Weg falsch war.

+0

arbeitete für mich :) –

+0

@Rafa Firenze. Danke für den Kommentar. Wenn es Ihr Problem löst, akzeptieren Sie es bitte als akzeptierte Antwort, damit es auch anderen Entwicklern hilft. – Smeet

+0

es ist nicht meine Frage, ich gab eine positive Antwort (+1) an Sie –