如何在内部存储android java中下载和保存媒体文件

Posted

技术标签:

【中文标题】如何在内部存储android java中下载和保存媒体文件【英文标题】:how to download and save media files in internal storage android java 【发布时间】:2021-08-27 09:05:02 【问题描述】:

我想从互联网上下载一些音频文件。我想使用 downloadmanager 下载这个文件,但我不知道如何将这些文件保存到 android 中的特定内部存储位置。 InternalStorage/folder/filename.mp3(这样我就可以轻松访问它们)。

manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
                Uri uri = Uri.parse("URL");
                DownloadManager.Request request = new DownloadManager.Request(uri);
                request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);
                long reference = manager.enqueue(request);

对下载很有用。但我们无法指定这些文件的位置。

那么如何指定这些文件保存在内部存储的特定位置。还有,如何accessdelete这些文件。

请不要提出这个问题,因为我在阅读许多文章时感到困惑。

如果有其他更好的选择或任何建议评论下来

【问题讨论】:

当然可以。更好地查看 request.setDestination... 函数。 【参考方案1】:

检查 request.setDestination 函数here 要将文件存储在外部应用程序特定目录 [例如:“external/Android/data/your_app_name/filePath_you_set_in_function”],请使用如下:

DownloadManager.Request request = new DownloadManager.Request(uri);
request.setDescription("Selected Video is being downloaded");
request.allowScanningByMediaScanner();
request.setTitle("Downloading Video");
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
//Set the local destination for the downloaded file to a path within the application's external files directory
request.setDestinationInExternalFilesDir(context, Environment.DIRECTORY_DOWNLOADS, fileName); //To Store file in External Public Directory use "setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName)"
DownloadManager manager = (DownloadManager)
mContext.getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);

如果您想将其下载到另一个地方,您需要在下载完成后使用 IO 流将其移动。下载管理器完成下载后,您可以使用广播接收器执行此任务。您可以使用 FileProvider 在 Android 10 或更高版本的其他应用中打开文件。

【讨论】:

"Path" 不是公共目录,所以不会去。而且它们不是回调。 抱歉,您的更新通过提供完整的 parh 使情况变得更糟。并且不需要遗留权限请求。从不。 @blackapps,这对我来说效果很好。如果您有另一个选项,请分享。 @Akki 但如何检索和删除该特定文件。 (我正在使用request.setDestinationInExternalFilesDir @SachinBurdak,你已经回答了!。是的,要获取特定文件,请使用“context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), fileName)”【参考方案2】:

只需添加此行即可保存文件:

request.setDestinationInExternalFilesDir(context,Environment.DIRECTORY_ALARM,mp3name);  

删除该文件

File file = new 
File(context.getExternalFilesDir(Environment.DIRECTORY_ALARMS),"Fav_Ringtone.mp3");

file.delete();

读取这个文件

File file= newFile(context.getExternalFilesDir(Environment.DIRECTORY_ALARMS),"Fav_Ringtone.mp3");

【讨论】:

以上是关于如何在内部存储android java中下载和保存媒体文件的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap 下载文件并保存在内部存储中

如何从 cordova 应用程序将文件保存在内部存储中?

将公共文件保存在内部存储中

如何在内部存储中创建文件夹并保存捕获的图像

在内部存储中打开视频

拍照并将其保存在Android的内部存储中