2015-05-08 43 views
0

我正在使用DownloadManager從我的android應用程序從web服務器下載文件到設備外部存儲。我需要在完成此下載後啓動另一個功能。我的文件下載的代碼是這樣的:尋找下載完成downloadManager在Android

String url = "http://192.168.1.105/download/file.ext"; 
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); 
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "files.ext"); 
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); 
final long downloadId = manager.enqueue(request); 

請建議如何得到這樣的onDownloadComplete .....

+0

可以'downloadId'被用來下載完成時,知道嗎? –

回答

1

,我發現我的答案在:DownloadManager.ACTION_DOWNLOAD_COMPLETE broadcast receiver receiving same download id more than once with different download statuses in Android
和我的代碼是這樣的:

private boolean downloadComplete(long downloadId){ 
     DownloadManager dMgr = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); 
     Cursor c= dMgr.query(new DownloadManager.Query().setFilterById(downloadId)); 

     if(c.moveToFirst()){ 
      int status = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS)); 

      if(status == DownloadManager.STATUS_SUCCESSFUL){ 
       return true; //Download completed, celebrate 
      }else{ 
       int reason = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_REASON)); 
       Log.d(TAG, "Download not correct, status [" + status + "] reason [" + reason + "]"); 
       return false; 
      } 
     } 
     return false; 
    } 
2

您可以使用ACTION_DOWNLOAD_COMPLETE與廣播接收器

public class DonwloadCompleteReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // get complete download id 
     long completeDownloadId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1); 
     // to do here 
    } 
} 
+0

我相信有一些報告中的錯誤,請參閱:http://code.google.com/p/android/issues/detail?id=18462 –

0
registerReceiver(onComplete, 
       new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)); 

參考this

相關問題