在我的应用中,有一些用户可以下载的文件。文件通过android下载管理器下载。但是,几周以来,数百名用户一直在抱怨他们的文件每8-12天自动删除一次,甚至没有他们卸载应用程序。 (可能会有更多用户不愿意抱怨同样的问题。)
现在,可能存在许多用户特定的原因,为什么会在少数设备上发生这种情况。但考虑到大量的用户,似乎我可能做错了什么。
为什么系统/下载管理器会自动删除文件?有没有办法通知系统或下载管理器不删除某些文件?或者我应该在下载后重新命名文件,以便将它们与下载管理器取消链接,并希望问题能够解决?
编辑:
以下是我用来下载文件的代码:
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(trackLink));
request.setTitle(trackTitle);
request.setDestinationInExternalPublicDir("Tracks", trackTitle + ".mp3");
request.setVisibleInDownloadsUi(false);
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);
答案 0 :(得分:5)
我也遇到过这个问题。查看DownloadIdleService
的来源,如果下载设置为在用户界面中不可见,则会在7天之后将其删除,因为他们已经考虑过#34;陈旧"。
这是来自DownloadIdleService
的javadoc:
/**
* Remove stale downloads that third-party apps probably forgot about. We
* only consider non-visible downloads that haven't been touched in over a
* week.
*/
答案 1 :(得分:2)
从Android Q开始,存在一个更大的问题,其中setVisibleInDownloadsUi设置的值将被忽略,默认情况下为false。这些文件将在一周后被删除。您可以通过以下方式进行测试:下载文件,在日历中更改日期(例如2个月),在终端中调用:
adb shell cmd jobscheduler运行-f com.android.providers.downloads -100
它从DownloadIdleService开始工作,其中删除了旧文件和禁止文件。您可以在logcat(未设置过滤器)中看到DownloadManager尝试删除您的文件。
为此,您可以:
Environment#getExternalStoragePublicDirectory(String) with Environment#DIRECTORY_DOWNLOADS)
-这是从Android Q开始的唯一可见下载路径且不应删除的路径答案 2 :(得分:1)
评论太大了我只是把它作为答案。
我还没有任何线索,为什么文件丢失或在一段时间内被删除 - 这有点奇怪。但我必须做类似的事情,从来没有经历过这样的事情。所以我虽然可能会分享我在那种情况下所做的事情。
我更喜欢将下载的文件保存在应用程序所在的内部存储中,而不是将其保存在外部存储中。例如,我用来保存下载文件的文件路径类似于......
/data/data/" + "com.example.myapplication" + "/musicfiles/
所以我下载后立即告诉媒体扫描程序有关新文件的信息,以便用户可以立即使用。因此,当我使用AsyncTask
下载文件时,我必须在成功下载后以onPostExecute
方式运行扫描程序。
protected void onPostExecute() {
if(downloadCompletedSuccessfully) {
MediaScannerConnection.scanFile(context,
new String[]{file.toString()}, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.i("ExternalStorage", "Scanned " + path + ":");
Log.i("ExternalStorage", "-> uri=" + uri);
}
});
}
}
因此,在您的情况下,我认为由于下载的文件不可用,可能不会出现“下载”按钮不可见的问题。如果媒体扫描程序也无法在文件系统中找到该文件,则可能会发生这种情况。所以你可以考虑尝试一下。
我不知道干净的主人或某些软件是否会偶尔清除垃圾文件,如果它们在外部存储器中。您也可以考虑调查这些。