我通过裁剪意图在SD卡中保存了一个位图文件,我想在另一个活动中阅读它。但是,我一直得到以下运行时错误:无法解码流:java.io.FileNotFoundException:file:/sdcard/oc.jpg:open failed:ENOENT(没有这样的文件或目录) E / ReadFile:位图必须为非空
Uri uri=Uri.parse("file:///sdcard/oc.jpg");
//save output image in uri
cropIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
在另一项活动中读取同一文件:
Bitmap image4 = BitmapFactory.decodeFile("file:///sdcard/oc.jpg");
我尝试this solution但它没有用,我得到了相同的运行时错误。
答案 0 :(得分:0)
您需要写入外部存储空间,确保添加了权限:
<manifest ...>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
...
检查外部存储器是否可用于读写
public boolean isExternalStorageWritable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
return true;
}
return false;
}
使用公共目录的根目录而不是使用Android的根目录。
如果要在外部存储上保存公共文件,请使用getExternalStoragePublicDirectory()
public File getAlbumStorageDir(String albumName) {
// Get the directory for the user's public pictures directory.
File file = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DCIM), albumName);
if (!file.mkdirs()) {
Log.e(LOG_TAG, "Directory not created");
}
return file;
}
如果要保存应用程序专用的文件,请使用getExternalFilesDir()
public File getAlbumStorageDir(Context context, String albumName) {
// Get the directory for the app's private pictures directory.
File file = new File(context.getExternalFilesDir(
Environment.DIRECTORY_DCIM), albumName);
if (!file.mkdirs()) {
Log.e(LOG_TAG, "Directory not created");
}
return file;
}
我忘了提及:
decodeFile
需要路径