我尝试使用安卓工作室将位图图像保存在我的SD卡中



请帮我在代码中解决这个问题,我想将位图图像(新图像)保存到手机(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();}

最新更新