查询DownloadManger似乎是检索文件ID并删除其在库存中的引用的唯一方法"下载"应用程序。这在Clear out android Downloads list中有所建议。我一直无法做到这一点。
我的应用是私密分发的,并在必要时自行更新。这很好,但我想以新的版本启动时以编程方式删除更新.apk文件。删除成功,但文件仍在“下载”中列出。如果用户点击它,他们会收到" Parse错误"因为它显然不再存在难看...
我想清理一下。这是我的代码的相关部分(在删除文件之前调用):
public void DoCleanup(Context context) {
DownloadManager oDM = (DownloadManager)context.getSystemService(android.content.Context.DOWNLOAD_SERVICE);
Cursor oCur = oDM.query(new DownloadManager.Query().setFilterByStatus(o_DM.STATUS_SUCCESSFUL));
if (oCur.getCount() > 0) {
oCur.moveToPosition(-1);
while (oCur.moveToNext()) {
if ( --some condition-- ) {
int iRemove = oDM.remove(oCur.getLong(oCur.getColumnIndex(oDM.COLUMN_ID)));
}
}
}
}
即使在查询对象上没有设置过滤器, oCur.getCount()也始终为0。为什么?该文件肯定位于从Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
获取的文件夹中。