Если нет внешнего хранилища

В моем приложении для Android я сохраняю файл растрового изображения в каталоге во внешнем хранилище, используя следующие коды:

String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state))
{
    final String mPath =  Environment.getExternalStorageDirectory().getAbsolutePath() + getResources().getString(R.string.record_folder);

    File dir = new File(mPath);
    if(!dir.exists()) {
        dir.mkdirs();
    }

OutputStream fout = null;
File imageFile = new File(mPath + getResources().getString(R.string.file_name));

Bitmap im = Bitmap.createBitmap(b, 0, 0, canvas.getWidth(), (int) ((float)canvas.getHeight())*600/800);

try {
    fout = new FileOutputStream(imageFile);
    im.compress(Bitmap.CompressFormat.JPEG, 97, fout);
    fout.flush();
    fout.close();
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}
}
else
{

    // ?

}

Что делать, если устройство, на котором установлено мое приложение, не имеет внешнего хранилища?

Благодарю.

3 ответа

Решение

Проверьте параметры хранения, которые предоставляет ОС Android. Если внешнее хранилище не смонтировано, я бы сохранил файл во внутреннем хранилище.

http://developer.android.com/guide/topics/data/data-storage.html

Надеюсь, это поможет вам!

используйте этот код для проверки доступности носителя во встроенном внешнем хранилище.

boolean mExternalStorageAvailable = false;
boolean mExternalStorageWriteable = false;
String state = Environment.getExternalStorageState();

if (Environment.MEDIA_MOUNTED.equals(state)) {
    // We can read and write the media
    mExternalStorageAvailable = mExternalStorageWriteable = true;
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
    // We can only read the media
    mExternalStorageAvailable = true;
    mExternalStorageWriteable = false;
} else {
    // Something else is wrong. It may be one of many other states, but all we need
    //  to know is we can neither read nor write
    mExternalStorageAvailable = mExternalStorageWriteable = false;
}

ваш код зависит от этого

Тогда вы можете использовать:

Context.getFilesDir()

получить путь к файлу во внутренней памяти. Если вашему устройству требуется наличие внешней памяти, вы можете сообщить об этом своему пользователю и спросить, нормально ли хранится изображение во внутренней памяти.

Другие вопросы по тегам