2013-01-03 70 views
1

我想做一個應用程序,將對我的設備進行一些清理工作,我希望它刪除我的Download目錄中的所有文件。我使用的方法是這樣來刪除這些文件:清除android下載列表

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機插)。但是,如果我在設備上打開股票「下載」應用程序,則所有文件仍然列在那裏。當我點擊一個,我得到一個彈出窗口,顯示「下載的文件沒有找到[再試一次] [刪除]。再次按下try將重新下載文件,按刪除將刪除列表中的條目。有一些廣播或我可以用來告訴這個下載應用程序,我希望它與當前文件系統「刷新」或「同步」,以便它可以識別出這些文件已被刪除。

類似從DCIM目錄中刪除圖像時,它們仍然會在刪除後出現在圖庫的應用程序中,我能夠廣播MEDIA_MOUNTED意圖,導致圖庫應用程序用當前文件「刷新」(然後正確從Gallery應用程序中刪除了圖片),但MEDIA_MOUNTED似乎沒有影響下載應用程序

有沒有什麼可以根據/sdcard/Download/目錄中當前存在(或不存在)的文件來告訴下載應用程序我希望它刷新其列表的同一行?

+0

您是否檢查[Downloads]下列出的文件是否存在於['MediaStore'](http://developer.android.com/reference/android/provider/MediaStore.Files.html)中?如果是這樣,我想你應該簡單地刪除從存儲中物理刪除的所有文件的條目。 –

+0

我想知道下載應用程序是否在下載文件夾中的隱藏文件中存儲索引。當然重擊會很髒,但刪除其他所有內容也是如此。 –

+0

下載保存在數據庫中。 'DownloadManager'通過一個'ContentProvider'與那個數據庫交互,不幸的是它不是SDK的一部分。 – CommonsWare

回答

2

實際上可以清除下載應用程序中的條目。您可以簡單地使用DownloadManager中的remove(id)方法。唯一的問題是你可能沒有下載文件的referenceId了。如果您有本地文件Uri或文件名,則可以簡單地查詢DownloadManager以獲得成功下載並查找該ID。這看起來非常麻煩,但工程。