Внутреннее хранилище в HTC Desire - PullRequest
0 голосов
/ 25 мая 2011

Я пытаюсь сохранить файл во внутреннем хранилище (не на SD-карте).Как указано в документации, если я использую getExternalStorageDirectory(), данные будут помещены в /Android/data/<package_name>/, но там ничего нет.Этот код взят из здесь .Подобный код работал на Archos, хотя.

File path = Environment.getExternalStorageDirectory();
File file = new File(path, "DemoPicture.jpg");
txtList.append(file.getPath());

try {
    path.mkdirs();
    InputStream is = getResources().openRawResource(R.drawable.icon);
    OutputStream os = new FileOutputStream(file);
    byte[] data = new byte[is.available()];
    is.read(data);
    os.write(data);
    is.close();
    os.close();
} catch (IOException e) {
    Log.d("ExternalStorage", "Error writing " + file, e);
}

Я использую Android SDK 2.1.Разрешение WRITE_EXTERNAL_STORAGE уже добавлено в манифест.Нет ошибки в logcat.Любой намек?

Ответы [ 2 ]

1 голос
/ 25 мая 2011

Вы путаете Внутренние и Внешние хранилища. Вы говорите о внутренней памяти, в то время как на самом деле вы используете external storage:

File path = Environment.getExternalStorageDirectory();

Полученный файл будет находиться здесь: /mnt/sdcard/DemoPicture.jpg. Но если вы действительно хотите использовать внутреннее хранилище, взгляните на функцию Context.openFileOutput.


EDIT:

Путь к файлу = Environment.getExternalStorageDirectory (); Файл файл = новый файл (путь, "DemoPicture.jpg"); txtList.append (file.getPath ());

try {
    path.mkdirs();
    InputStream is = getResources().openRawResource(R.drawable.icon);
    OutputStream os = new FileOutputStream(file);
    byte[] data = new byte[is.available()];
    is.read(data);
    os.write(data);
    is.close();
    os.close();
} catch (IOException e) {
    Toast.makeText(this, "Failed to write a file", Toast.LENGTH_LONG).show();
}
0 голосов
/ 01 июля 2011

Забыл обновить.Проблема исчезает, когда я просто отключаю устройство и запускаю приложение.Друг сказал мне, что он получил ту же проблему и решил ее, закрыв все приложения, которые могут получить доступ к SD-карте, например, Windows Explorer.

...