Я хотел бы получить путь к общедоступному хранилищу моего устройства Android. У меня есть два приложения. Один записывает некоторые файлы журналов, а другой используется для их чтения (по этой причине я не могу использовать личное хранилище приложения). Я хотел бы знать, есть ли метод, который даст мне путь к «общественному пространству» моего устройства, где я могу легко создавать и читать файлы.
Это решение не то, что я ищу:
http://developer.android.com/guide/topics/data/data-storage.html#filesInternal
Ни то, что:
Как получить внутренний и внешний путь SD-карты в андроид
Есть ли простое решение моей проблемы? Является ли внешнее общедоступное хранилище тем, что мне нужно?
http://developer.android.com/guide/topics/data/data-storage.html#filesExternal
Проблема в том, что когда я запускаю приложение на своем устройстве, все в порядке, но когда я запускаю его на устройстве, где нет карты памяти, оно не работает. Поэтому я хотел бы использовать внешнее общедоступное хранилище, а не карту памяти...
Мой код ниже не работает (он не сохраняет файл). Когда я выбираю каталог, который находится непосредственно в Environment.getExternalStorageDirectory().getAbsolutePath(), он работает... Что я делаю неправильно? :
transient private final String DIRECTORY = "/Android/data/com.aaa.bbb.ccc/files/";
public void writeLog()
{
Calendar calendar = setDate();
File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + DIRECTORY);
if(!dir.exists())
dir.mkdir();
File file = new File (dir, "log_" + calendar.get(Calendar.YEAR) + "_"
+ ((calendar.get(Calendar.MONTH))+1) + "_"
+ calendar.get(Calendar.DAY_OF_MONTH)
+ ".dta");
...
}
ОБНОВИТЬ:
Почему этот код работает:
File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Dir1/");
if(!dir.exists())
dir.mkdir();
И это не
File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Dir1/Dir2/Dir3/");
if(!dir.exists())
dir.mkdir();