Intereting Posts
Android: установите алфавитно-цифровую клавиатуру, чтобы сначала отобразить числовое значение в EditText Учебники по использованию Hibernate в Android? Делая запрос GSON, используя залп StartService из класса, который не расширяет действие Как проверить, отображается ли диалог или отображать несколько диалогов того же типа? ConnectedAndroidTest на нескольких эмуляторах Как изменить цвет линии в EditText Android: как подключиться к телефону? Изменить конфигурацию Настройка значка setError для TextView Как отправить простую электронную почту программно? (Существует простой способ сделать это?) Виртуальная клавиатура, использующая EditText в Galaxy Tab Обнаружение тегов NFC не вызывает onNewIntent, и он запускает из основной активности Платформа Android: как реализовать пользовательский интерфейс, подобный колоде карт? Не найден ресурс, который соответствует указанному имени: attr 'android: actionModeShareDrawable' appcompat-v7: 21.0.0 с compileSdkVersion 21

Программный доступ к внутреннему хранилищу (не SD-карта) на Verizon HTC Droid Incredible (Android)

Я пытаюсь найти информацию о том, как программно получить доступ к 8GB Internal Storage Memory HTC Droid Incredible's .

Чтобы определить External Storage (SD Card) Location , я использую команду:

 android.os.Environment.getExternalStorageDirectory(). 

Я не смог найти никаких следствий для Internal phone Storage .

При изучении телефонов HTC / Google Nexus One , Motorola Droid и HTC Dream / G1 там (как и следовало ожидать) не кажется какой-либо Mount Point для такого Arbitrary Internal Storage .

На этих телефонах Internal Storage разделено между разделами /data , /system и /cache .

Internal Storage Incredible, разумеется, не будет находиться в /system . /cache также маловероятен, если он глобально не читается / не исполняется .

Я читал в обзорах, что телефон по-прежнему будет ограничен 512MB или около того для приложений, предполагая, что это не просто подкаталог /data .

Конечно, у меня нет доступа к подразделению Droid Incredible .

Solutions Collecting From Web of "Программный доступ к внутреннему хранилищу (не SD-карта) на Verizon HTC Droid Incredible (Android)"

Здесь есть дополнительная информация: Droid Incredible points mount points . Кажется, что Droid Incredible монтирует внутреннее хранилище в / emmc, предположительно смонтированное r / w. Пока еще не проверено, требуется ли разрешение WRITE_EXTERNAL_STORAGE для получения доступа к r / w – я пытаюсь получить эту информацию по адресу http: // code.google.com/p/aedict/issues/detail?id=86

Я, вероятно, разрешу это, разрешив пользователю два варианта хранения данных:

  1. SD Card
  2. Только Droid Incredible-only Внутреннее хранилище

Изменить: кажется, что разрешения WRITE_EXTERNAL_STORAGE достаточно: согласно http://www.droidforums.net/forum/droid-incredible-hacks/50916-how-i-rooted-my-incredible-installed-busybox.html как / Sdcard и / emmc имеют тот же GID, что и 1015.

Edit2: В соответствии с http://groups.google.com/group/android-developers/browse_thread/thread/45d96f07abd83549/42d5ec430b2f7572?lnk=raot Incredible возвращает / sdcard в качестве значения результата Environment.getExternalStorageDirectory (). Поэтому пользователю необходимо решить, хочет ли он использовать / sdcard или / emmc. Автоопределение Невероятного может быть основано на существовании пути / emmc.

Поскольку вам известно, что доступ к внутреннему хранилищу обычно ограничен определенными каталогами для каждого приложения с помощью разрешений. Это означает, что одно приложение считывает данные из другого и не обращается к системным файлам без использования API. Это имеет смысл, поскольку, например, если у вас было приложение для интернет-банкинга, вы не хотели бы, чтобы другие приложения могли получать доступ к любой из своих кешированных данных.

Каждое приложение получает данные в каталоге под /data/data . Однако, как правило, вы не указываете пути явно, а использовали такие методы, как Context.openFileOutput() который создает файл в соответствующем подкаталоге вашего приложения напрямую.

Я согласен с вами в том, что вряд ли большинство 8GB хранилища Incredible будет использоваться для раздела /data .

Поэтому, если у них будет отдельный раздел, позволяющий легко хранить музыку и фотографии на внутренней памяти телефона, тогда им придется делать это так, как это совместимо с существующими приложениями. Это означает использование Environment.getExternalStorageDirectory() но так как Incredible также поддерживает SD-карты, тогда вы правы в том, что неясно, как это может работать.

В Android-разработчике Google Group есть тема, в которой обсуждается этот точный вопрос. Пока нет ответа (на момент написания) о том, как работает Incredible, есть сообщение, в котором говорится, что Samsung Galaxy решает ту же проблему следующим образом:

  • Внутреннее хранилище монтируется на /sdcard
  • Если SD-карта также доступна, ее можно найти на /sdcard/sd

Это кажется разумным решением, поскольку оно будет совместимо с существующими приложениями, в том числе с ошибочно жестко закодированными /sdcard вместо использования Environment.getExternalStorageDirectory() .

Поэтому я бы посоветовал использовать Environment.getExternalStorageDirectory() когда вы ищете большие области хранения – либо SD-карту, либо внутреннюю для телефона, и надейтесь, что каждый телефон вернет что-то разумное.

Просто используйте это:

 String primary_sd = System.getenv("EXTERNAL_STORAGE"); if(primary_sd != null) Log.i("EXTERNAL_STORAGE", primary_sd); String secondary_sd = System.getenv("SECONDARY_STORAGE"); if(secondary_sd != null) Log.i("SECONDARY_STORAGE", secondary_sd)