在不使用 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.
或者使用 MediaScannerConnection
和 scanFile()
,将允许查询 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 上的“下载”应用程序中,即使文件是在本地创建的。
我目前是 运行 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.
或者使用 MediaScannerConnection
和 scanFile()
,将允许查询 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 上的“下载”应用程序中,即使文件是在本地创建的。