簡體   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