2013-05-24 2 views
0

Я проверяю, смонтировано и доступно ли свободное хранилище для чтения/записи, а затем я прочитал его. Я использую точный официальный образец кода Android (from here).Внешнее хранилище не указывает на большую внутреннюю SD-карту

В нем указано, что внешнее хранилище не установлено. getExternalFilesDir(null)null.

Во-первых, я испытал это с помощью HTC One V, у которого не было вставлена ​​внешняя SD-карта (но она имеет большое внутреннее пространство).

Теперь я испытываю то же самое на планшете WayteQ xTAB-70dci, который имеет огромную «внутреннюю SD-карту» (так называется планшет), но внешняя SD-карта не вставлена.

В обоих случаях стандартные API для Android (getExternalStorageState(), getExternalFilesDir() и т. Д.) Возвращают false.

Я полностью сыт по горло. Очевидно, пользователи, которые платят за мое приложение (игра с большой графикой), ожидают, что он будет правильно установлен на своем телефоне/планшете с огромной внутренней SD-картой (например, WayteQ).

Что здесь не так? Почему эти устройства (HTC, WayteQ, давай!) Указывают на внешнюю SD-карту (которая обычно отсутствует по умолчанию от продукта) вместо их огромного внутреннего хранилища SD? Абсолютно нелогично и даже вредно. Что я могу сделать, есть ли стандартное обходное решение?

+0

См. Http://stackoverflow.com/questions/15425574/some-android-devices-treat-internal-storage-as-sd-cards-and-external-storage-as?rq=1 - но в основном, ответ заключается в том, что поведение, когда доступны оба варианта, зависит от производителя устройства. – Jules

ответ

1

Как сказано, это зависит от производителя устройства. Я действительно считаю, что обман с внутренними/внешними точками хранения делает Samsung на своих телефонах.

В дополнение к проверке наличия внешнего доступа вам нужно будет проверить размер каталога /data, чтобы узнать, можете ли вы кэшировать приложение во внутренней части. См. here. Я предполагаю, что вы загружаете остальную часть приложения по запросу в любом случае из-за ограничений размера файлов, не так ли?

Информация о бонусе: Это не должно вас сильно беспокоить, но, как хороший разработчик, вы можете принять это во внимание. Некоторые используют сценарии CronMod, которые будут монтировать различные папки под внешним хранилищем. Поэтому у них больше места. Отлично, правда? Проблема возникает, когда вы используете другую версию и /data/data находится на SD (который по телефону отображается как большая внутренняя память), но /data/cache все еще находится на внутренней скорости. Внезапно у вас могут не быть настоящих жестких данных о внутреннем кеше, доступном для вас. Но опять же, это делают опытные пользователи в основном, которые должны иметь представление о том, что происходит.

+1

К краткому чтению документов «Если файлы не находятся на устройстве, используйте службу лицензирования приложений Google Play для запроса URL-адресов для файлов расширения, а затем загрузите и сохраните их». Я предполагаю, что API, читающий файлы расширения, предполагает, что они находятся на внешней стороне. Учитывая, что у вас есть URL-адреса, вы можете писать файлы везде, где вы будете обрабатывать логику их чтения. –