在Android Q中,您可以使用以下代码将图片保存在DCIM文件夹中:
// 获取DCIM文件夹路径
File dcimDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
// 创建一个新的文件
File newImageFile = new File(dcimDirectory, "my_image.jpg");
// 假设您已经有一个位图对象,将其保存到文件中
Bitmap bitmap = ...;
try {
FileOutputStream outputStream = new FileOutputStream(newImageFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
outputStream.flush();
outputStream.close();
// 通知媒体库更新
MediaScannerConnection.scanFile(context, new String[]{newImageFile.getAbsolutePath()}, null, null);
} catch (IOException e) {
e.printStackTrace();
}
上述代码将创建一个新的名为"my_image.jpg"的文件,并将位图对象压缩为JPEG格式,然后将其保存到DCIM文件夹中。最后,使用MediaScannerConnection
类的scanFile()
方法通知媒体库更新,以便新的图片可以在相册应用中显示出来。
请注意,为了使用这段代码,您需要在AndroidManifest.xml文件中添加以下权限:
另外,从Android Q开始,您需要在运行时请求存储权限才能访问外部存储器。您可以使用以下代码请求权限:
if (ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE);
}
确保在请求权限之后,处理onRequestPermissionsResult()
回调方法以处理用户对权限请求的响应。
下一篇:Android Q 外部存储更改