2015-06-10 2 views
0

Я получаю исключение, что разрешение на открытие файла запрещается, когда я пытаюсь открыть FileInputStream.FileNotFoundException EACCES (Permission Denied)

File myFile = new File(Environment.getExternalStorageDirectory() 
      .getAbsolutePath() + "/test/test.txt"); 
try { 
     FileInputStream inStream = new FileInputStream(myFile); // crash 

Вот StackTrace:

System.err﹕ java.io.FileNotFoundException: /storage/emulated/0/test/test.txt: open failed: EACCES (Permission denied) 
System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:456) 
System.err﹕ at java.io.FileInputStream.<init>(FileInputStream.java:76) 

... 

Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied) 
at libcore.io.Posix.open(Native Method) 
at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186) 
at libcore.io.IoBridge.open(IoBridge.java:442) 

И да, у меня есть права доступа в моем манифесте:

<uses-permission android:name="ANDROID.PERMISSION.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="ANDROID.PERMISSION.WRITE_EXTERNAL_STORAGE" /> 
+0

Возможный дубликат [open failed: EACCES (Permission denied)] (http://stackoverflow.com/questions/23527767/open-failed-eacces-permission-denied) – BSMP

ответ

3

Android чувствителен к регистру. Заменить ANDROID.PERMISSION с android.permission:

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

Кроме того, вы должны только один из этих разрешений. Если вы планируете писать на внешнее хранилище, вам также не нужно READ_EXTERNAL_STORAGE.

+0

Правильно, спасибо. AndroidStudio автоматически завершил его во всех кепках. Полностью пропустил это. –

+0

@DavidM: «AndroidStudio автоматически завершил его во всех шапках» - серьезно? Какую версию Android Studio вы используете? Я хотел бы посмотреть, могу ли я воспроизвести его и, если можно, получить отчет об ошибке, поданный за него. Благодаря! – CommonsWare

+0

Да, я набрал