2013-04-13 3 views
0

Я тестировал свое приложение на HTC One V несколько недель назад. Когда мое приложение проверило доступность внешнего хранилища при его первом запуске, выяснилось, что его нет. (Я использовал getExternalStorageState() и по результатам, getExternalFilesDir(null)).Внешнее хранилище и HTC One V

Я прочитал соответствующий поток stackoverflow (и Android doc), поэтому пришел к выводу, что любое устройство, поддерживающее Google Play, должно предлагать какое-то внешнее хранилище (SD-карта или другое). Официальные домашние страницы Android также подразумевают, что getExternalFilesDir должен всегда возвращать действительное место (если не размонтирован или не установлен на ПК и т. Д.).

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

Если я повернул (вместо этого вместо этого использовалась память телефона), все отлично работало на One V. Проблема в том, что это игра, которая будет больше 50 МБ, поэтому я вынужден использовать расширение APK Google Возможность файлов - и для этого требуется внешнее хранилище.

Имеют ли продавцы/операторы мобильной связи право продавать телефон без внешнего хранилища (в данном случае без SD-карты)? Я знаю, что это не вопрос девелоперов, но, как видите, что-то должно быть не так. Насколько я вижу, One V имеет большое внутреннее хранилище, поэтому мне интересно, почему getExternalStorageState не сообщил об этом как доступный.

ответ

1

Я разработал application, который, хотя и не требует, чтобы External Storage работал с файлами во «внешнем хранилище». Whatsapp тоже работает на HTC One V, поэтому, очевидно, есть проблемы с вашим кодом.

Дело в том, что в моем приложении, хотя minSdkVersion="8" Я не использовал getExternalFilesDir(null). Вместо этого я использовал getExternalStorageDirectory(), это было не из-за выбора. Я не знал о функции getExternalFilesDir() при разработке приложения. Тем не менее, приложение работает так, как должно, на HTC One V друга. Поэтому я предлагаю вам использовать getExternalStorageDirectory().

Пример кода:

String mountStatus = Environment.getExternalStorageState(); 
       if (mountStatus.equalsIgnoreCase("mounted")) { 
        Toast.makeText(MainActivity.this, 
          Environment.getExternalStorageDirectory().getAbsolutePath(), Toast.LENGTH_SHORT).show(); 
       } 
+0

Я не проверял код, но это суть его, чтобы получить внешний каталог хранения. –

+0

Я использовал официальный код Google, я сомневаюсь, что в моем коде были проблемы. Думаю, это, должно быть, было что-то особенное с одним V. –

+0

Прошу прощения, я имею в виду, что у устройств с внутренним хранилищем есть проблема с 'getExternalFilesDir()' не ваш конкретный код. Без обид :) –

Смежные вопросы