Еще раз, я столкнулся с вопросом, который был задан и ответил ранее, но в моей реализации он все еще не работает.
Я вызываю getExternalFilesDir (null) прямо в начале моего основного действия onCreate. Он возвращает null каждый раз, независимо от того, запускаю ли я его в AVD или на моем телефоне (Samsung Galaxy Plus).
Да, у меня есть строка <uses-permission android:name="android.permissions.WRITE_EXTERNAL_STORAGE" />
в моем AndroidManifest.xml, и да, я проверяю состояние внешней памяти перед тем, как сделать звонок, и он установлен.
Вот первые три строки внутри моего метода onCreate(). Фактически, это сразу после вызовов super.onCreate() и setContentView().
String state = Environment.getExternalStorageState();
File extFiles = getExternalFilesDir(null);
File locFiles = getFilesDir();
Итак, как только эти три строки выполнены, это значения для переменных:
state == "mounted"
extFiles == null
locFiles == "/data/data/com.mypackage.name/files"
У кого-нибудь есть идеи относительно того, почему это может быть?
----- ----- РЕДАКТИРОВАТЬ
Итак, я пробовал другой подход; Вместо использования getExternalFilesDir(null)
я попытался использовать File basePath = new File(Environment.getExternalStorageDirectory(), "myAppName");
Это не идеально, и я знаю, что в документации на Android сказано, и я согласен с этим, что вам лучше использовать getExternalFilesDir()
. Увидев, что это не работает для меня, хотя мне пришлось попробовать что-то еще. На этот раз функция возвращает действительный объект File, поэтому после указанной выше строки basePath имеет значение /mnt/sdcard/myAppName. Все идет нормально. Когда я проверяю с помощью DDMS, я вижу, что существует /mnt/sdcard, но не /mnt/sdcard/myAppName. Этого можно ожидать. Поэтому я называю boolean result = basePath.mkdirs();
Но это возвращает false, и когда я проверяю файловую систему, я могу подтвердить, что подпапка myAppName не была создана. Когда я создаю папку вручную через DDMS и помещаю в нее файлы, я могу читать эти файлы из своего приложения, но я не могу ничего писать в этой папке.
Пожалуйста, помогите! Я нахожусь на своем конце.