首页 > 技术文章 > WebView文件下载

feng747 2021-04-23 01:13 原文

1.调用其它浏览器下载文件:

这个很简单,我们只需为WebView设置setDownloadListener,然后重写DownloadListener的 onDownloadStart,然后在里面写个Intent,然后startActivity对应的Activity即可!

关键代码如下

wView.setDownloadListener(new DownloadListener(){
@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, 
    String mimetype, long contentLength) {
        Log.e("HEHE","开始下载");
        Uri uri = Uri.parse(url);
        Intent intent = new Intent(Intent.ACTION_VIEW,uri);
        startActivity(intent);
    }
});

如果你手机内存在多个浏览器的话,会打开一个对话框供你选择其中一个浏览器进行下载~


2.自己写线程下载文件

当然,你可能不想把下载文件放到默认路径下,或者想自己定义文件名等等,你都可以自己来写 一个线程来下载文件,实现示例代码如下:

核心代码

我们自己另外写一个下载的线程类:

DownLoadThread.java

 

然后MainActivity.java中创建并启动该线程:

wView.setDownloadListener(new DownloadListener(){
    @Override
    public void onDownloadStart(String url, String userAgent, String contentDisposition, 
    String mimetype, long contentLength) {
            Log.e("HEHE","onDownloadStart被调用:下载链接:" + url);
            new Thread(new DownLoadThread(url)).start();
    }
});

 

注意事项

好的,另外,别忘了写SD卡的读写权限以及Internet访问网络的权限:

<uses-permission android:name="android.permission.INTERNET"/>
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 

推荐阅读