安卓保存图片 报open failed: EPERM (Operation not permitted)
时间: 2024-02-21 11:54:57 浏览: 252
安卓保存图片报"open failed: EPERM (Operation not permitted)"的错误通常是由于Android 10及以上版本引入的沙盒机制所导致的。在这种情况下,您不能直接将文件保存到/sdcard目录下,而是需要将文件保存到应用程序的专属目录中。
以下是一种解决方法,您可以参考:
```java
// 获取应用程序专属目录
File directory = getExternalFilesDir(null);
if (directory != null) {
// 创建保存图片的目录
File imageDirectory = new File(directory, "images");
if (!imageDirectory.exists()) {
imageDirectory.mkdirs();
}
// 创建图片文件
File imageFile = new File(imageDirectory, "image.jpg");
try {
// 将图片保存到文件
FileOutputStream fos = new FileOutputStream(imageFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.close();
// 通知系统相册更新
MediaScannerConnection.scanFile(this, new String[]{imageFile.getAbsolutePath()}, null, null);
// 图片保存成功
Toast.makeText(this, "图片保存成功", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
// 图片保存失败
Toast.makeText(this, "图片保存失败", Toast.LENGTH_SHORT).show();
}
}
```
请注意,上述代码中的`bitmap`是您要保存的图片的Bitmap对象。此外,您还需要在AndroidManifest.xml文件中的`<application>`标签下添加属性`android:requestLegacyExternalStorage="true"`,以便在Android 10及以上版本中暂时保存到/sdcard路径下。
阅读全文