[英]In Android given a file not stored in MediaStore, how to find if it is audio or video file?
[英]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.