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 インテントをブロードキャストすることができました (これにより、ギャラリー アプリから画像が適切に削除されました)。ただし、MEDIA_MOUNTED はダウンロード アプリケーションには影響しないようです。

ダウンロードアプリに、ディレクトリに現在存在する(または存在しない)ファイルに基づいてリストを更新するように指示するためにできることはあります/sdcard/Download/か?

4

1 に答える 1

2

実際には、ダウンロード アプリケーションでエントリをクリアすることができます。remove(id)DownloadManagerのメソッドを使用するだけです。唯一の問題は、おそらくダウンロードしたファイルの referenceId をもう持っていないことです。ローカル ファイルの Uri またはファイル名がある場合は、ダウンロードが成功したかどうかを DownloadManager に照会し、ID を検索するだけです。非常に面倒に思えますが、機能します。

于 2013-03-15T00:17:14.167 に答える