Android:在外部存储中保存图像的最佳方式

时间:2015-07-13 14:50:48

标签: android external

当我试图在某些设备上保存图像时,应用程序崩溃了。 经过一些研究后,我认为问题是imageRoot,但我有这么多解决方案迷失了...... 我认为问题在于获取外部存储路径。 我用来测试我的应用的设备没有任何SD卡,路径为/mnt/sdcard/Pictures并且图像正在成功保存。 无论手机是否有SD卡,我都希望它能正常工作。 感谢您提前提供任何帮助。

imageRoot=new File(Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES), "AppName");

private void saveImage() {


        Bitmap bitmap = sqimage.getDrawingCache();
        File image = new File(imageRoot, imageName);



        if (image.exists()) {
            image.delete();

        }

        try {
            FileOutputStream output = new FileOutputStream(image);
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, output);
            output.flush();
            output.close();
            new SingleMediaFileConnector(getActivity().getApplicationContext(), image);

        } catch (FileNotFoundException e) {
            e.printStackTrace();
            success = false;
        } catch (IOException e) {
            e.printStackTrace();
            success = false;
        }
  }

1 个答案:

答案 0 :(得分:1)

有时getExternalStoragePublicDirectory路径不存在。你需要检查它的存在。

try {
    imageRoot=new File(Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_PICTURES), "AppName");
    File image = new File(imageRoot, imageName);

    // Make sure the Pictures directory exists.
    imageRoot.mkdirs();

    // Other stuffs here

} catch (IOException e) {
    // Unable to create file, likely because external storage is
    // not currently mounted.
    Log.w("ExternalStorage", "Error writing " + file, e);
}

有关详细信息,请参阅here

<强> [编辑]
可以使用另一种方式:

getExternalFilesDir(Environment.DIRECTORY_PICTURES);