WebView控件之文件下载

作者: 游戏开发小Y | 来源:发表于2017-04-21 18:46 被阅读25次

通常webview渲染的界面中含有可以下载文件的链接,点击该链接后,应该开始执行下载的操作并保存文件到本地中。webview来下载页面中的文件通常有两种方式:

  1. 自己通过一个线程写java io的代码来下载和保存文件(可控性好)
  1. 调用系统download的模块(代码简单)

1.第一种下载

// 页面下载功能
        mWebView.setDownloadListener(new DownloadListener() {
            @Override
            public void onDownloadStart(String url, String userAgent,
                    String contentDisposition, String mimetype,
                    long contentLength) {
                URL = url;
                // 让ProgressDialog显示
                progressBar.show();
                Thread loginThread = new Thread(new Runnable() {
                    @Override
                    public void run() {
                        InputStream in = null;
                        FileOutputStream fout = null;
                        // 獲取文件全名,包括後綴
                        downloadFile = new File(Environment
                                .getExternalStorageDirectory().getPath()
                                + DirName);
                        if (!downloadFile.exists()) {
                            downloadFile.mkdirs();
                        }
                        String FolderName = getFileName(URL);

                        if (Environment.getExternalStorageState().equals(
                                Environment.MEDIA_MOUNTED)) {

                            sdFile = new File(downloadFile, FolderName);

                            if (sdFile.exists()) {
                                if (progressBar.isShowing()) {
                                    progressBar.dismiss();
                                }
                                openFile(mContext, sdFile);
                            } else {
                                try {
                                    // String[] mimetypeName =
                                    // FolderName.split(".");
                                    // String HouZui = "."
                                    // + mimetypeName[mimetypeName.length - 1];
                                    URL httpUrl = new URL(URL);
                                    HttpURLConnection conn = (HttpURLConnection) httpUrl
                                            .openConnection();
                                    conn.setDoInput(true);
                                    conn.setDoOutput(true);
                                    in = conn.getInputStream();
                                    FileLen = conn.getContentLength();// 根据响应获取文件大小
                                    if (Environment.getExternalStorageState()
                                            .equals(Environment.MEDIA_MOUNTED)) {

                                        sdFile = new File(downloadFile,
                                                FolderName);
                                        fout = new FileOutputStream(sdFile);
                                    } else {
                                    }
                                    byte[] buffer = new byte[1024];
                                    int len;
                                    int DownLoadLen = 0;
                                    while ((len = in.read(buffer)) != -1) {

                                        fout.write(buffer, 0, len);
                                        // DownLoadLen += len;
                                        // progressBar.setProgress((int)((DownLoadLen
                                        // / FileLen) * 100));
                                    }
                                    if (progressBar.isShowing()) {
                                        progressBar.dismiss();
                                    }
                                    openFile(mContext, sdFile);
                                } catch (Exception e) {
                                    e.printStackTrace();
                                } finally {
                                    if (progressBar.isShowing()) {
                                        progressBar.dismiss();
                                    }
                                    if (in != null) {
                                        try {
                                            in.close();
                                        } catch (IOException e) {
                                            e.printStackTrace();
                                        }
                                    }
                                    if (fout != null) {
                                        try {
                                            fout.close();
                                        } catch (IOException e) {
                                            e.printStackTrace();
                                        }
                                    }
                                }
                            }
                        }
                    }
                });
                loginThread.start();
            }
        });

第二种下载方式

class MyDownloadListenter implements DownloadListener{
 
 @Override
 public void onDownloadStart(String url, String userAgent,
 String contentDisposition, String mimetype, long contentLength) {
 System.out.println("url ==== >" + url);
 //new HttpThread(url).start();
  
 Uri uri = Uri.parse(url);
 Intent intent = new Intent(Intent.ACTION_VIEW, uri);
 startActivity(intent);
 }
  
 }

相关文章

  • WebView控件之文件下载

    通常webview渲染的界面中含有可以下载文件的链接,点击该链接后,应该开始执行下载的操作并保存文件到本地中。we...

  • iOS采坑记录

    采坑记录 iOS 通过 Webview点击下载链接问题 Webview点击下载链接,需要通过文件名下载文件,需要通...

  • WebView

    布局中创建 WebView 控件: 使用 WebView 控件: 调用 WebView 的** getSettin...

  • 第 9 章 - Android 网络编程

    1. WebView 的用法 1.1 在布局文件中添加 WebView 控件,使其充满屏幕 1.2 修改 Main...

  • Android之WebView

    1、在布局文件中定义一个WebView 2、在全局(onCreate()之前)定义WebView控件 3、在onC...

  • Android WebView

    使用流程 方式一 在Activity布局文件中添加控件 在代码中获取控件实例,调用loadUrl...

  • UIWebView加载本地HTML文件

    一、 WebView简单介绍 WebView是iOS中比较常用的一个控件,特别是现在app不好推广,下载成本高的时...

  • 获取WebView加载的网页内容并进行动态修改

    效果图 如图所示,整个界面只有一个webView控件,程序初始化的时候webView会去加载assets文件夹下面...

  • 控件总结

    一、WebView控件1.Android 解决WebView重定向问题 二,RecyclerView控件1.Rec...

  • 三种方式让 Android WebView 支持文件下载

    最近在开发的过程中遇到一个需求,那就是让 WebView 支持文件下载,比如说下载 apk。WebView 默认是...

网友评论

    本文标题:WebView控件之文件下载

    本文链接:https://www.haomeiwen.com/subject/pdfjzttx.html