Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中保存文件(图像)并支持从21到29的API级别?_Android_Media_Android External Storage_Android Storage - Fatal编程技术网

如何在Android中保存文件(图像)并支持从21到29的API级别?

如何在Android中保存文件(图像)并支持从21到29的API级别?,android,media,android-external-storage,android-storage,Android,Media,Android External Storage,Android Storage,所有上传到Google Play的新应用程序必须针对Android 10(API级别29)或更高版本。但是,当应用程序以API级别29为目标时,从Environment.getExternalStorageDirectory()返回的路径将不再可供应用程序直接访问 文档建议使用Context.getExternalFilesDir()(不适合我的用例,因为放在那里的文件是应用程序内部的,在卸载应用程序时会被删除)或MediaStore,这是有文档记录的 我被以下片段卡住了: // Find al

所有上传到Google Play的新应用程序必须针对Android 10(API级别29)或更高版本。但是,当应用程序以API级别29为目标时,从
Environment.getExternalStorageDirectory()
返回的路径将不再可供应用程序直接访问

文档建议使用
Context.getExternalFilesDir()
(不适合我的用例,因为放在那里的文件是应用程序内部的,在卸载应用程序时会被删除)或
MediaStore
,这是有文档记录的

我被以下片段卡住了:

// Find all image files on the primary external storage device.
// On API <= 28, use VOLUME_EXTERNAL instead.
Uri collection = MediaStore.Images.Media.getContentUri(
            MediaStore.VOLUME_EXTERNAL_PRIMARY);
但是,我仍然收到一条警告,即MediaStore.VOLUME_EXTERNAL需要API级别29。 此外,根据相同的文档,我试图设置
MediaColumns.RELATIVE\u PATH
,为系统提供存储新编写文件的提示。代码片段如下所示:

ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DISPLAY_NAME, file.getFilename());
values.put(MediaStore.Images.Media.RELATIVE_PATH, "My_image_app_folder");

Uri uri = resolver.insert(collection, values);
与此相同的问题是,该字段需要API级别29

总之,如何存储文件(图像)并支持从21到29的API级别

ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DISPLAY_NAME, file.getFilename());
values.put(MediaStore.Images.Media.RELATIVE_PATH, "My_image_app_folder");

Uri uri = resolver.insert(collection, values);