Используя Android 6.0.1 (API23) на Nexus 5X,
Различные версии Android и способы доступа к внешнему хранилищу (например, к USB-накопителю в моем случае) могут сбивать с толку. Насколько я понял, вам нужно предоставить разрешения в своем манифесте следующим образом:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
После этого вы сможете получить доступ к внешнему хранилищу ..
Вот мой подход к тому, как получить путь к внешнему хранилищу, используя метод getExternalFilesDirs (). Но оказывается, распознается только внутренняя SD-карта (т.е. первый элемент массива, возвращаемый методом).
Из того, что я читал, должно быть больше элементов массива, возвращаемых методом "getExternalFilesDirs ()", если к телефону подключено больше устройств внешней памяти. Но в моем случае ни один из них недоступен.
Вот мой код:
String strInfo = "";
File folders[] = getExternalFilesDirs(null);
// File folders[] = ContextCompat.getExternalFilesDirs(this,null);
strInfo += "\ngetExternalFilesDirs(null):\n";
for(File f : folders){
strInfo += f.getAbsolutePath() + "\n";
}
if (folders.length > 1) {
Toast.makeText(this, "nr of folders = " + folders.length + "/ info = " + strInfo, Toast.LENGTH_SHORT).show();
File myFile = new File(folders[1], "testfile.txt");
} else {
// !!!!!!!!!!!!! Keep ending up in this case, even tough a USB-stick is
// connected to the phone (...also tried with a second SD-card
// connected...but same thing, keeeping up ending here...
// any idea WHY ???????????????
Toast.makeText(this, "No external storage device found / info = " + strInfo, Toast.LENGTH_SHORT).show();
}
В конце концов, я хотел бы создавать файлы и папки на внешнем USB-накопителе. Может ли кто-нибудь подсказать мне надежный метод создания новых файлов и папок на USB-накопителе, подключенном к телефону Android-6.0.1 ?? Я ценю это.
a reliable method on how to create new files and folders on an USB-stick
. Там нет ничего особенного в создании файлов. Я думаю, ваша проблема заключалась в поиске пути к USB-накопителю. - person greenapps   schedule 13.08.2016Notification
, позволяющий исследовать или извлекать том. - person CommonsWare   schedule 13.08.2016After that you should be able to access external storage.
. Нет. В версии 6.0 вы должны запрашивать разрешения на выполнение. Теперь ты? Или вы зашли в настройки своего приложения, чтобы установить их вручную? - person greenapps   schedule 13.08.2016I want to write files and folders on an external USB-stick. And for that I need its path
. Почему ты повторяешься? Конечно, я это понимал. - person greenapps   schedule 13.08.2016I tried......to put them on manually...
. Что ж, у вас получилось? - person greenapps   schedule 13.08.2016getExternalFilesDirs()
и родственники (например,getExternalCacheDirs()
) должны работать. Обратитесь к производителю устройства, чтобы узнать, почему его сборка Android не работает. Кроме того, вы можете попробоватьACTION_OPEN_DOCUMENT
,ACTION_CREATE_DOCUMENT
и kin как часть Структура доступа к хранилищу. - person CommonsWare   schedule 13.08.2016you might find something like /storage/A1B2-2014
Я нашел / storage / F49E-14F2 (или / storage / A6236-6330 для другого USB-накопителя). Но что мне теперь с этим делать? Как мне теперь записать туда файл или папку? Любая помощь приветствуется - person iKK   schedule 13.08.2016could not make directory
... Я действительно думаю, что это все еще неправильный путь. Кроме того, остается вопрос, почемуFile folders[] = getExternalFilesDirs(null);
предоставляет только одну папку (то есть папку для SD-карты, встроенной в мой Nexus5X), но не другую папку-массив. Предположительно он должен вернуть массив со ВСЕМИ внешними хранилищами (включая USB-флешки или несколько внешних SD-карт ...). Но это не так. Почему ? (Я использую Android 6.0.1 и API 23) - person iKK   schedule 14.08.2016