我的应用程序使用 DownloadManager 从网站下载 jpgs 并将它们存储在 /sdcard/Android/name.app/ 目录中,以便在应用程序的多个 Fragment 中使用。下载效果很好,但是 jpg 在 Gallery 应用程序中可见,这是我不想要的,因为它们只是我的应用程序的资产。我无法弄清楚如何让它们不出现在画廊应用程序中。我什至尝试将 .nomedia 文件添加到创建它们的目录中。任何帮助,将不胜感激!
DownloadManager myDownloadManager = (DownloadManager) myActivity.getSystemService(Context.DOWNLOAD_SERVICE);
Request myRequest = new Request(Uri.parse(episodeArtLink));
myRequest.setNotificationVisibility(Request.VISIBILITY_HIDDEN);
myRequest.setVisibleInDownloadsUi(false);
myRequest.setDestinationInExternalFilesDir(myActivity, Environment.DIRECTORY_DOWNLOADS, myFilename);
myDownloadManager.enqueue(myRequest);
这些问题似乎是因为 MediaScanner 正在将图像添加到系统数据库中,即使我没有要求它这样做。
我创建了一个演示该问题的测试应用程序。如果您单击“下载”按钮,Google 徽标将显示在应用程序中。如果您进入图库应用程序,您还应该在名为“下载”的图库中看到 Google 徽标。如果您转到设置 -> 应用程序并清除图库和媒体存储的数据,则 Google 徽标将消失并且不会再次显示在图库中,因为该文件位于 /sdcard/Android/data/ 下,受.nomedia 文件。您可以转到 /sdcard/Android/data/com.example.downloadmanagertest/files/Download/ 以验证图像是否仍在手机上。即使在重新启动后,如果您清除图库和媒体存储的数据,图像也不会显示在图库中。我已经在运行 4.2.2 的 Nexus 4 和 Nexus 7 上对此进行了测试。
来源:https ://dl.dropboxusercontent.com/u/114414/DownloadManagerTest.zip