android下载管理器下载文件一次

时间:2017-05-09 10:46:03

标签: android download android-download-manager download-manager

我有下面的代码,当点击按钮开始下载文件,但问题是当我多次点击按钮时,它会多次下载同一个文件。如何防止这种情况?我应该添加哪些代码?在哪里?

    Button download= (Button)findViewById(R.id.download);
    download.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String path="http://xxxx.com/sound/ok.mp3";
            file_download(path);
        }
    });
                 }
     public void file_download(String uRl) {
     File direct = new File(Environment.getExternalStorageDirectory()
            + "/yebo");

    if (!direct.exists()) {
        direct.mkdirs();
    }

    DownloadManager mgr = (DownloadManager) this.getSystemService(Context.DOWNLOAD_SERVICE);

    Uri downloadUri = Uri.parse(uRl);
    DownloadManager.Request request = new DownloadManager.Request(downloadUri);
    request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI
            | DownloadManager.Request.NETWORK_MOBILE)
            .setAllowedOverRoaming(false).setTitle("pic")
            .setDescription("Downloading,Please Wait ...")
            .setDestinationInExternalPublicDir("/yebo", "mimi.mp3");
             mgr.enqueue(request);

}

2 个答案:

答案 0 :(得分:1)

使用下面的代码。

      public void onClick(View view) {

                        String path="http://xxxx.com/sound/ok.mp3";
                        file_download(path);
download.setEnable(false);

                    }

如果您不想禁用按钮,则可以设置如下标记:

int flag = 0;
 public void onClick(View view) {
if(flag == 0)
{                String path="http://xxxx.com/sound/ok.mp3";
                file_download(path);
flag += 1;
}


            }

答案 1 :(得分:0)

您可以禁用Button并在完成后重新启用它。例如

 final Button download= (Button)findViewById(R.id.download);
 @Override
 public void onClick(View view) {
      download.setEnabled(false);
      download.setAlpha(.2f); // grey it out
      String path="http://xxxx.com/sound/ok.mp3";
      file_download(path);
 }