在不使用 DownloadManager 的情况下更新 Android "Downloads" 文件夹

Updating Android "Downloads" folder without using a DownloadManager

我目前是 运行 Marshmallow,我已将我的应用程序设置为使用以下方法将文件下载到 phone 的下载文件夹以下路径:

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)

和一个AsyncTask。一切正常,我可以访问下载的文件。

不过,问题是这些文件只能在 phone 上使用文件浏览器访问,而不能通过 Android 应用程序通过默认 Downloads 文件夹访问。我知道您可以使用 Android DownloadManager 自动执行此操作,但我想保留我当前的 AsyncTask 实现而不必使用 DownloadManager.

我的问题是,有没有一种方法可以简单地 "refresh" 或 "update" Downloads 文件夹中的内容,以便使用 Android 下载应用程序显示它们?

我也尝试过使用媒体扫描仪 Intent(刷新图库),但据我了解,这不适用于 Marshmellow

activity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));

is there a way I can simply "refresh" or "update" what is in the Downloads folder so they show up using the Android Downloads application?

下载应用程序仅显示其自身 ContentProvider 中的内容,而后者又受通过 DownloadManager 下载的内容驱动。它没有显示任何特定设备上目录的内容,并且 ContentProvider 未记录或不支持独立访问。

I have also tried using the media scanner Intent (to refresh the gallery), but from my understanding, this does not work for Marshmellow.

或者使用 MediaScannerConnectionscanFile(),将允许查询 MediaStore 的应用程序查看您的文件。这包括 MTP 守护进程; MTP 是桌面 OS 查看 Android 设备外部存储内容的方式。 None 其中直接影响下载应用程序。

我不知道,如果没有 DownloadManager class,这是可能的。我在 AsyncTask

中使用以下内容
DownloadManager downloadManager = (DownloadManager)mainActivity.getSystemService(mainActivity.DOWNLOAD_SERVICE);
downloadManager.addCompletedDownload(file.getName(), file.getName(), true, "application/json", file.getAbsolutePath(),file.length(),true);

这将使文件出现在 6.0 上的“下载”应用程序中,即使文件是在本地创建的。