У меня есть приложение для Android, которое по предпочтению использует внешнее хранилище, если доступно для хранения различных файлов, но будет использовать внутреннюю память, если внешнее хранилище недоступно.Haipad M701 с использованием/nand каталога при запросе внешнего хранилища
я расширил приложения и поддерживать статический файл для рабочей директории приложения следующим образом ...
public class MyApp extends Application {
protected static File myFilesDir = null;
protected static Helper myHelper = null;
@Override
public void onCreate() {
super.onCreate();
myHelper = new Helper(this);
if (myHelper.CanWriteExtStorage()) {
Log.d(TAG, "onCreate() - myHelper.CanWriteExtStorage() returned TRUE");
myFilesDir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Android/data/" + packageName + "/files");
}
else {
Log.d(TAG, "onCreate() - myHelper.CanWriteExtStorage() returned FALSE");
myFilesDir = new File(getFilesDir().getAbsolutePath());
}
myFilesDir.mkdirs();
if (!myFilesDir.equals(null)) {
Log.d(TAG, "onCreate() - myFilesDir: " + myFilesDir.getAbsolutePath());
}
приложение в настоящее время бета-тестирование некоторых людей, которых я нахожусь в непосредственном контакте с и один парень прокомментировал, что он думал, что я должен использовать SD-карту, если она доступна, но он мог видеть из logcat, что приложение использовало /nand/Android/data...
. Я спросил, что/nand ссылается, и он сказал, что это внутренняя память на его пэде/планшетном устройстве.
Код класса Helper используется для проверки внешнего хранилища выглядит следующим образом ...
protected boolean CanWriteExtStorage() {
boolean mExternalStorageWriteable = false;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state))
mExternalStorageWriteable = true;
return mExternalStorageWriteable;
}
... но соответствующий выход журнала выглядит следующим образом ...
D/com.mycompany.myapp(3844): onCreate() - myHelper.CanWriteExtStorage() returned TRUE
D/com.mycompant.myapp(3844): onCreate() - myFilesDir: /nand/Android/data/com.company.myapp/files
Так , возникает вопрос, почему, когда я могу проверить, что внешнее состояние хранилища показывает, что оно установлено, Environment.getExternalStorageDirectory()
вернет путь к тому, что кажется внутренним хранилищем?
Должен ли я тестировать что-то кроме Environment.MEDIA_MOUNTED
или есть что-то странное об этом устройстве или Android-версии (он работает v2.1).
В конечном итоге это не имеет значения, но я обеспокоен тем, что для некоторых устройств неверна логика.
Я действительно прочитал, что раньше, но не правильно взял, «также может быть реализован как встроенное хранилище на устройстве, отличном от защищенного внутреннего хранилища» (или не совсем понял). Таким образом, у него есть внутренние, «nand» и SD-карты, и mfrs решил «nand» предпочтительнее SD-карты ... hmmm.Не уверен, что я одобряю их решение, поскольку это вызывает некоторые незначительные проблемы. Спасибо за ответ. – Squonk
@ Mister Я как бы понял, что вам это может не понравиться :) К сожалению, я не смог найти метод для запроса одного типа другого (nand vs. sdcard) –
Я согласен, что, похоже, существуют только те два метода без параметров для выбора. Я собираюсь дать ему пользовательский apk, который будет явно нацелен на SD-карту, которую я знаю. По крайней мере, это поможет объяснить, является ли использование nand корнем проблем, которые у него есть или нет. Еще раз спасибо. – Squonk