请帮我在代码中解决这个问题,我想将位图图像(新图像)保存到手机(Galaxy j7)的SD卡中,但是我收到错误(没有这样的文件或目录)
File filepath;
filepath = Environment.getExternalStorageDirectory();
File dir = new File(filepath.getAbsolutePath()+"/save image");
dir.mkdirs();
File file = new File(dir,"myimage.png");
Toast.makeText(MainActivity.this,"image saved to SD",Toast.LENGTH_LONG).show();
try{
OutputStream stream ;
stream = new FileOutputStream(file);
newimage.compress(Bitmap.CompressFormat.PNG,100,stream);
stream.flush();
stream.close();
}catch (IOException e)
{
e.printStackTrace();
}
// Parse the saved image path to uri
Uri savedImageURI = Uri.parse(filepath.getAbsolutePath());
// Display the saved image to ImageView
// imagev.setImageURI(savedImageURI);
// Display saved image uri to TextView
tv_saved.setText("Image saved in external storage.n" + savedImageURI);
错误消息是 :
W/System.err: java.io.FileNotFoundException: /storage/emulated/0/save image/myimage.png (No such file or directory)
我添加了在清单中写入的权限.xml如下所示:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="21" />
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="21"/>
您的代码没有问题,问题在于您正在编译项目的Android版本。在更高版本的 Android 上,您应该实现存储权限的运行时权限。
请参阅此处的答案,这将解决您的问题。
编辑:您的实现还有另一个问题,我在发布答案后认识到。在尝试将图像保存在名为"保存图像"的目录中之前,您应该通过实现
String folder_main = "save image";
File f = new File(Environment.getExternalStorageDirectory(), folder_main);
if(!f.exists()) {f.mkdirs();}