当我试图在某些设备上保存图像时,应用程序崩溃了。
经过一些研究后,我认为问题是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;
}
}
答案 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);