Если нет внешнего хранилища
В моем приложении для 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()
получить путь к файлу во внутренней памяти. Если вашему устройству требуется наличие внешней памяти, вы можете сообщить об этом своему пользователю и спросить, нормально ли хранится изображение во внутренней памяти.