2013-07-10 48 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