2013-06-01 53 views
1

我正在开发一个Android应用程序,允许用户从列表视图中选择一个文件并下载它。我有一个AsyncTask提取文件,并为每个文件设置一个onClickListener允许下载该文件时,用户点击它。我已经遍布互联网,但我无法从AsynTask获得下载管理器工作。任何帮助都会有所帮助。使用下载管理器从AsyncTask下载文件

+0

哪些方面的解决方案不起作用? HTTP连接失败?你没有得到在UI线程上发布的结果吗?需要更多信息来提供有用的答案。 – mmccomb

+0

当我点击文件后,我收到一个通知,表明该文件正在下载,但没有出现在通知托盘中 –

回答

1

下面是简单的例子:

 btnDown.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 


      String dir = Environment.DIRECTORY_MUSIC; 
      dir += "/klp"; 
      File fileDir = new File(dir); 
      if (!fileDir.isDirectory()) { 
       fileDir.mkdir(); 
      } 


      Toast.makeText(Detail.this, "Download song " + name, Toast.LENGTH_SHORT).show(); 
      // Download File 
      DownloadManager.Request request = 
        new DownloadManager.Request(Uri.parse(url)); 
      request.setDescription(nameFile); 
      request.setTitle(name); 
      // in order for this if to run, you must use the android 3.2 to compile your app 
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
       request.allowScanningByMediaScanner(); 
       request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); 
      } 
      request.setDestinationInExternalPublicDir(dir, nameFile); 


      // get download service and enqueue file 
      DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); 
      manager.enqueue(request); 


     } 
    });