如何使用ContentResolver为低于API 29/AndroidQ的设备保存图像?

如何使用ContentResolver为低于API 29/AndroidQ的设备保存图像?,android,Android,要将图像保存到Android Q及更高版本中的共享/外部文件夹中,我们必须使用ContentResolver,并保存到根文件夹。/Pictures或。/DCIM,如以下代码所示: ContentResolver resolver = .getContentResolver(); ContentValues contentValues = new ContentValues(); contentValues.put(MediaStore.MediaC

要将图像保存到Android Q及更高版本中的共享/外部文件夹中,我们必须使用
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我会尝试