Не могу создать папку на внешнем хранилище на Android
Мой телефон для разработкиNexus 5
, БегAndroid 4.4.2
.
В моем приложении я пытаюсь создать на внешнем хранилище папку, в которой будут храниться отладочные данные для моего приложения. В основном он будет содержать все команды, выполняемые приложением, поэтому, когда пользователь сталкивается с проблемой, я могу попросить его отправить мне информацию из папки отладки для анализа.
Я начал с попытки записи файла в папку, но обнаружил, что при создании папки произошла ошибка. Сначала я использовалmkdir()
Затем я перешел наmkdirs()
что тоже не сработало.
у меня есть<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
в моем манифесте.
Вот код для создания папки:
File folder = new File(Environment.getExternalStorageDirectory() + "/DebugData");
String path = folder.getPath();
if(!folder.mkdirs() || !folder.exists()){
Log.e(LOG_TAG, path + " failed");
} else {
Log.d(LOG_TAG, path + " succeeded");
}
Вот что я тоже попробовал:
//Check SD card state
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state) || !Environment.MEDIA_MOUNTED.equals(state)) {
Log.e(LOG_TAG, "Error: external storage is read only or unavailable");
} else {
Log.d(LOG_TAG, "External storage is not read only or unavailable");
}
Это возвращает, что внешнее хранилищене только для чтения или недоступно.
Я также пробовал разные пути, такие какFile folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Folder1");
Вот где это стало действительно запутанным.
Я пробовал разработку на разных телефонах. Во-первых, я схватилGalaxy S4 GT-i9505
БегAndroid 4.2.2
и это сработало. Я был в состоянии создавать папки и писать в них. Это показало мне, что код работает. Также путь, возвращаемый при запуске кода на S4 и Nexus 5, был таким же.
Тогда я думал, что это может быть конкретной версии Android. Так что я схватилNexus 4
с участиемAndroid 4.4.2
и код работал над этим также. Создал папки и позволил мне писать в них.
Ни один из телефонов не рутирован и все стандартные. Там нет специальных приложений или что-нибудь, что я могу думать о настройках на Nexus 5, которые могли бы вызвать проблемы с разрешениями. Соединение установлено на медиаустройство (MTP).
РЕДАКТИРОВАТЬ:
Я должен добавить, что я попробовал следующее, которое также не работало:
Запись файла в корневой каталог внешнего хранилищаСоздание файла в корневом каталоге внешнего хранилища и запись в негоСоздание папки по указанному пути и запись в нее файлаСоздание файла по указанному пути и запись в негоЯ не понимаю, что является причиной этого, могу ли я проверить или изменить что-либо еще, чтобы устранить проблему?
РЕДАКТИРОВАТЬ 2:
Оказывается, проблема была связана с индексацией.
В основном все другие устройства, на которых я тестировал, позволили мне повторно подключить USB-соединение и просмотреть созданные файлы и папки.
По какой-то причине мой Nexus 5 не индексирует папки / файлы, даже если они существуют.
Я скачал другое стороннее приложение для просмотра файлов и заметил, что все папки и файлы были там.
Таким образом, чтобы просмотреть эти папки и файлы с помощью отладки по USB, мне нужно перезагрузить телефон, чтобы переиндексировать их, что выглядит довольно раздражающим, но это лучше, чем вообще не работать.
Благодарю.