2013-07-10 57 views
2

我搜索了很多,但我找不到滿意的答案。 我剛剛創建了一個方法,在調用Log.i()時打印所有可用的下載狀態;這裏的方法:使用DownloadManager獲取下載狀態

DownloadManager downloadManager = (DownloadManager)getSystemService(Context.DOWNLOAD_SERVICE); 
DownloadManager.Query query = new DownloadManager.Query();    
Cursor c = downloadManager.query(query); 

while (c.moveToNext()) { 
      switch(c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS))) { 
        case DownloadManager.STATUS_FAILED: 
         Log.i("46dl","Download failed!"); 
        break; 

        case DownloadManager.STATUS_PAUSED: 
         Log.i("46dl","Download paused!"); 
        break; 

        case DownloadManager.STATUS_PENDING: 
         Log.i("46dl","Download pending!"); 
        break; 

        case DownloadManager.STATUS_RUNNING: 
         Log.i("46dl","Download in progress!"); 
        break; 

        case DownloadManager.STATUS_SUCCESSFUL: 
         Log.i("46dl","Download complete!"); 
        break; 

        default: 
         Log.i("46dl","Download is nowhere in sight"); 
        break; 
       } 
      } 

但是,這隻適用於,如果我從我的應用程序開始下載;例如。

Request request = new Request(Uri.parse("http://www.something.com/img/img4.jpg")); 
downloadManager.enqueue(request); 

對於使用其他應用程序下載的其他文件(例如使用瀏覽器),Log中沒有行被寫入。 我錯過了什麼?謝謝您的幫助!

回答

1

您無法獲得其他應用程序完成下載的下載狀態。 這是受保護的。

+0

downvote的原因是什麼? – RvdK

+0

嗨,我還沒有downvote;上次下載完成後有什麼方法可以獲取? Becouse我正在開發一個應用程序,當所有的下載完成後,關閉連接。謝謝! – Slv3r

+0

不與DownloadManager,在根源設備上是可能的。使用公共URI:content:// downloads/all_downloads/2334,您可以獲取文件(每個人都可以訪問)。但是你不知道進展情況。 – RvdK