2011-01-13 2 views
3

В моем приложении я сохранить файл XML на карту SD пользователя делая File newxmlfile = new File(Environment.getExternalStorageDirectory() + "/Message.xml");Сохранения файла на телефон вместо SD карты

Но не все пользователи имеют SD-карту в своем телефоне, и поэтому мое приложение, скорее всего, сбой ,

Как изменить способ создания файла, чтобы сохранить файл в памяти телефона вместо SD-карты?

Также, как я должен изменить загрузку файла? (в настоящее время: new InputSource(new FileInputStream(Environment.getExternalStorageDirectory() + "/Message.xml")))

EDIT: Я не думаю, что у вас есть вопрос правильно. Я знаю страницу хранения данных в Документах для Android, и я ее прочитал. Я просто хочу знать, как мне его настроить, чтобы соответствовать моему текущему способу сохранения и загрузки файла.

+1

Каждый Android-совместимое устройство поддерживает общую «внешнюю память», что вам может использовать для сохранения файлов. Это может быть съемный носитель (например, SD-карта) или внутреннее (несъемное) хранилище. Примечание. Не путайте слово «внешний» здесь. Этот каталог лучше воспринимать как медиа/общую память. Это файловая система, которая используется во всех приложениях (не применяет разрешения). Традиционно это SD-карта, но она также может быть реализована как встроенное хранилище на устройстве, которое отличается от защищенного внутреннего хранилища и может быть смонтировано как файловая система на компьютере. – rohitverma

ответ

4

Понял, изменяя

Environment.getExternalStorageDirectory() + "/Message.xml" 

в

Environment.getDataDirectory() + "/data/com.companyname.appname/files/Message.xml" 
1

Вы можете использовать openFileOutput, чтобы получить доступ к внутреннему хранилищу. Для получения дополнительной информации вы должны прочитать documentation on internal storage.

3

Прежде всего, вы должны проверить наличие и готовность внешнего хранилища (SD-карты), проверив getExternalStorageState(). Подробнее: http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

Затем, если SD-карта недоступна, вы можете записать ее на внутреннюю память. Подробнее здесь, например, о том, как писать и читать: http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

+0

Дело в том, что я не хочу, чтобы мое приложение было фрагментировано. Я хочу, чтобы 1 версия работала одинаково на всех устройствах. Кроме того, я не хочу иметь чеки по всему моему приложению. Это намного проще. – Galip

+0

Итак, вы должны сохранять только на внутреннем хранилище, как вы писали в вопросе, и даже не проверяете внешнее хранилище. –

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