Android 5 (HTC) EACCES (разрешение отклонено)

Приложение

не может создать folder/file на android 5(HTC HTC6525LVW os version: 5.0.1) внешнем хранилище в каталоге, принадлежащем приложению.

Родительская папка возвращается методом [getExternalFilesDirs(String type)][1].

Sdcard.

У кого-нибудь еще есть эта проблема или предложение, как ее решить?

(К сожалению, у меня нет этого устройства, чтобы проверить его больше)

Изменить: от одного пользователя я знаю, что до этой ошибки она зашифровала SD-карту, а затем отформатировала ее.

Ответы

Ответ 1

Некоторые потенциальные идеи относительно того, что вызвало это:

  • Если телефон работает в режиме USB-хранилища при подключении к вашему компьютеру, вы все равно можете развернуть/отладить, как обычно, но операции записи не будут выполняться

  • У вас не было разрешения: в файле манифеста вы должны проверить, есть ли у вас <permission name="android.permission.WRITE_EXTERNAL_STORAGE" >

  • Разрешения в неправильном месте: убедитесь, что тэг разрешения (в манифесте) находится за пределами приложения

  • Запись в папку data может вызвать такие проблемы, поэтому убедитесь, что вы пишете на sdcard, а не data

Это все, о чем я мог думать. Надеюсь, это поможет:)

Ответ 2

Возвращает путь к каталогу, хранящему файлы приложений на внешнем хранилище. Возвращает значение null, если внешнее хранилище в настоящий момент не установлено, поэтому он не может гарантировать, что путь существует; вам нужно будет снова вызвать этот метод, когда он будет доступен.

Другой вариант - вы можете проверить, доступно ли внешнее хранилище:

String state = Environment.getExternalStorageState();
File filesDir;

// Make sure it available
if (Environment.MEDIA_MOUNTED.equals(state)) {
 // We can read and write the media
 filesDir = getExternalFilesDir(null);

} else {


 // Load another directory, probably local memory
    filesDir = getFilesDir();
}

Ответ 3

У меня такая же проблема, но найти точные решения надеюсь, что этот ответ будет полезен для вас

//Create Folder
File folder = new 
File(Environment.getExternalStorageDirectory().toString()+"/Aqeel/Images");
folder.mkdirs();

//Save the path as a string value
String extStorageDirectory = folder.toString();

//Create New file and name it Image2.PNG
 File file = new File(extStorageDirectory, "Image2.PNG");

Ответ 4

Добавить разрешение на доступ к файлам manifest.xml

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