1

我正在尝试制作一个应用程序,该应用程序将在我的设备上进行一些清理,除此之外,我希望它删除驻留在我的Download目录中的所有文件。我使用这样的方法来删除文件:

private static void deleteFiles(File path) {
    Util.Log("deleting all files underneath " + path.getName());
    if( path.exists() && path.isDirectory() ) {
        File[] files = path.listFiles();
        for(int i=0; i<files.length; i++) {
            if(files[i].isDirectory()) {
                Util.Log(files[i].getName() + " is a dir, being recursive.");
                deleteFiles(files[i]);
            }else {
                Util.Log(files[i].getName() + " is a file, deleting it.");
                files[i].delete();
            }
        }
    }
}

这是正确删除文件(我已使用文件管理器验证并插入 PC)。但是,如果我在我的设备上打开股票“下载”应用程序,所有文件仍然列在那里。当我单击一个时,我会弹出一个弹出窗口,上面写着“找不到下载的文件。[再试一次] [删除]。再次按尝试将重新下载文件,按删除将删除列表中的条目。我想知道是否有一些广播或其他东西可以用来告诉这个下载应用程序我希望它与当前文件系统“刷新”或“同步”,以便它能够识别出文件已被删除。

从目录中删除图像时也会发生类似的情况,删除后DCIM它们仍会出现在股票“图库”应用程序中。我能够广播一个 MEDIA_MOUNTED 意图,导致 Gallery 应用程序使用当前文件“刷新”(然后正确地从 Gallery 应用程序中删除图像)。但是 MEDIA_MOUNTED 似乎不会影响下载应用程序。

是否有任何类似的方法可以告诉下载应用程序我希望它根据目录中当前存在(或不存在)的文件刷新其列表/sdcard/Download/

4

1 回答 1

2

实际上可以清除下载应用程序中的条目。您可以简单地使用remove(id)DownloadManager 中的方法。唯一的问题是您可能不再拥有下载文件的 referenceId。如果您有本地文件 Uri 或文件名,您可以简单地查询 DownloadManager 以获取成功下载并查找 id。看起来很麻烦,但是很管用。

于 2013-03-15T00:17:14.167 回答