繁体   English   中英

如何在 MediaStore 的帮助下下载 Android R 中的图像/视频文件?

[英]How to download image/video file in Android R with help of MediaStore?

由于 getExternalStoragePublicDirectory 在 Android Q 中已被弃用,建议使用MediaStore API

这是我的图片 URL https://cdn.pixabay.com/photo/2020/04/21/06/41/bulldog-5071407_1280.jpg

我想下载此图像文件并希望根据MediaStore API 保存共享文件夹,即下载或图片文件夹

下面是示例代码

ContentResolver resolver = context.getContentResolver();
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, name);
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, mimeType);
contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DOWNLOADS);

Uri uri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues); 

注意: compileSdkVersion 30

我想要一个如何在 Android R 中下载图像/视频文件并将其保存到 MediaStore 的下载文件夹位置的示例。

Kanaiya我回答了 MediaStore 答案的改进MediaStore.Images.Media.insertImage 已弃用

我确实使用了 workManager 和 viewModel 不确定这是否适用于您的用例,我确实在 API 26 和 API 30 上测试了我的答案。

我的工作示例只是一个 2018 年 workmanager 代码实验室,我对其进行了一些小改动以删除折旧的 api 调用,感谢最初的想法commonsware

为了将其保存在 android 10 上。然后在调用 insert 方法后,您将获得 URI 然后调用

 os = getContentResolver().openOutputStream(uri); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, os); os.close();

Android 10中调用insert方法是不够的

您的代码将如下所示

 ContentResolver resolver = context.getContentResolver(); ContentValues contentValues = new ContentValues(); contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, name); contentValues.put(MediaStore.MediaColumns.MIME_TYPE, mimeType); contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DOWNLOADS); Uri uri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues); OutputStream os = getContentResolver().openOutputStream(uri); Bitmap.compress(Bitmap.CompressFormat.JPEG, 100, os); os.close();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM