如果没有任何外部存储空间

时间:2014-02-14 09:04:08

标签: android save android-external-storage

在我的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 个答案:

答案 0 :(得分:2)

希望这可能会帮助你!!!

使用此代码检查内置外部存储中的媒体可用性。

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;
}

你的代码依赖于那个

答案 1 :(得分:1)

然后你可以使用:

Context.getFilesDir()

获取内部存储器中的文件路径。如果您的设备需要外部存储器,那么您可以告知您的用户并询问是否将图像存储在内部存储器中。

答案 2 :(得分:1)

检查android OS提供的存储选项。如果没有安装外部存储器,我会将文件保存在内部存储器中。

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