如何使用ContentResolver为低于API 29/AndroidQ的设备保存图像?
要将图像保存到Android Q及更高版本中的共享/外部文件夹中,我们必须使用如何使用ContentResolver为低于API 29/AndroidQ的设备保存图像?,android,Android,要将图像保存到Android Q及更高版本中的共享/外部文件夹中,我们必须使用ContentResolver,并保存到根文件夹。/Pictures或。/DCIM,如以下代码所示: ContentResolver resolver = .getContentResolver(); ContentValues contentValues = new ContentValues(); contentValues.put(MediaStore.MediaC
ContentResolver
,并保存到根文件夹。/Pictures
或。/DCIM
,如以下代码所示:
ContentResolver resolver = .getContentResolver();
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, "myfile");
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "image/jpeg");
contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, "myApp"); //RequiresApi 29
Uri imageUri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
OutputStream out = resolver.openOutputStream(imageUri);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
我想将此代码继续使用到minSDK 19
,但由于列MediaStore.MediaColumns.RELATIVE\u PATH
需要Api 29,因此无法继续使用此代码。有什么聪明的方法可以做到这一点吗
目前,我支持在API 29以下运行的设备,如下所示:
String path = Environment.getExternalStorageDirectory() + File.separator + Environment.DIRECTORY_PICTURES;
File directory = new File(path);
directory.mkdirs()
File file = new File(directory, filename + fileExtension);
OutputStream out = new BufferedOutputStream(new FileOutputStream(file))
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
我想将此代码继续执行到minSDK 19,但由于列MediaStore.MediaColumns.RELATIVE_路径需要Api 29,因此无法执行。
如果您不在Api 29下执行该行,会发生什么情况?@blackapps我会尝试