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

public class DownLoadThread implements Runnable {private String dlUrl;public DownLoadThread(String dlUrl) {this.dlUrl = dlUrl;}@Overridepublic void run() {Log.e("HEHE", "开始下载~~~~~");InputStream in = null;FileOutputStream fout = null;try {URL httpUrl = new URL(dlUrl);HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();conn.setDoInput(true);conn.setDoOutput(true);in = conn.getInputStream();File downloadFile, sdFile;if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {Log.e("HEHE","SD卡可写");downloadFile = Environment.getExternalStorageDirectory();sdFile = new File(downloadFile, "csdn_client.apk");fout = new FileOutputStream(sdFile);}else{Log.e("HEHE","SD卡不存在或者不可读写");}byte[] buffer = new byte[1024];int len;while ((len = in.read(buffer)) != -1) {fout.write(buffer, 0, len);}} catch (Exception e) {e.printStackTrace();} finally {if (in != null) {try {in.close();} catch (IOException e) {e.printStackTrace();}}if (fout != null) {try {fout.close();} catch (IOException e) {e.printStackTrace();}}}Log.e("HEHE", "下载完毕~~~~");}
}

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

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

运行结果:

我们打开SD卡可以看到,下载好的文件已经安安静静地躺在SD卡里了.

注意事项:

好的,另外,别忘了写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"/>

还有,in = conn.getInputStream();要写在conn设置完所有东西的后面!!切记,不然什么都读不了!

Android例子—WebView文件下载相关推荐

  1. Android 获取WebView的内容宽度高度

    转自:http://www.android100.org/html/201311/19/4804.html Android开发时,从WebView,我不但想要知道ContentHeight,还想知道C ...

  2. Android中WebView加载本地Html,与JavaScript与Android方法相互传值(续)...

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010046908/article/details/51809558 接着上篇Android中Web ...

  3. Android【WebView】

    WebView全面解析 简介 WebView是android中一个非常重要的控件,它的作用是用来展示一个web页面.它使用的内核是webkit引擎,4.4版本之后,直接使用Chrome作为内置网页浏览 ...

  4. android封装浏览器,android利用WebView实现浏览器的封装

    android提供了封装浏览器的接口,可以让开发者利用自己的view显示网页内容.今天又实现研究了一下,利用WebView显示浏览器内容,还可以利用 WebViewClient显示自己需要的内容. 效 ...

  5. 的Android组件、工具、框架大全(转) android 学习 android 例子 android 开源项目

    2015最流行的Android组件.工具.框架大全(转) 转自:2015最流行的Android组件.工具.框架大全 Android 是目前最流行的移动操作系统之一. 随着新版本的不断发布, Andro ...

  6. Android中WebView使用6,js调java实现播放视频

    效果图 项目结构: 核心代码: JsCallJavaVideoActivity中 package com.zhh.android;import android.app.Activity; import ...

  7. android webview兼容华为,三星、华为等android里webview不支持input file的解决方法

    三星.华为等android里webview不支持input file的解决方法 分类:软件问题| 发布:佚名| 查看: | 发表时间:2014/5/16 由于安全因素android webview屏蔽 ...

  8. Android使用WebView加载网页及数据

    今天主要介绍一下Android的一个原生组件-WebView. 在Api中关于这个类的介绍大致就是这是一个可以显示网页的视图,如: webView.loadUrl("http://www.b ...

  9. android使用webview时按后退退出的问题

    使用webview打包图片站点http://www.gg4493.cn,代码都好了,具体如下 public class MainActivity extends ActionBarActivity { ...

最新文章

  1. Android系统原理与源码分析(1):利用Java反射技术阻止通过按钮关闭对话框
  2. XDC约束技巧——CDC篇
  3. [有限元] DistMesh Matlab 程序示例
  4. C#算法设计排序篇之04-选择排序(附带动画演示程序)
  5. Visual studio 的教程
  6. 人间值得!支付宝宣布平台上登记器官捐献人数:90后占比超一半
  7. android 应用使用Root权限执行linux命令
  8. 容器技术Docker K8s 21 容器服务ACK基础与进阶-存储管理
  9. 畅谈无线通信系统物理层之系统概述
  10. imx6ull ccm时钟体系
  11. 云计算机教室优缺点,云教室和传统机房的区别,终于有人把它说清了
  12. android gps开发必备资料(含测试demo下载)
  13. Windows环境下edge浏览器点击下载没有反应
  14. html四边形布局,canvas四边形.html
  15. android中bmob云存储,Android中的Bmob移动后端云服务器功能
  16. Python自动切换wifi
  17. test %eax %eax
  18. c语言输入名字判断姓是否缩写,C语言复习笔记
  19. 深度学习应用13电影评论情感分析
  20. Python调用PHP的函数

热门文章

  1. 手机震动按摩器:随时随地massage
  2. 用MATLAB画多边形并写入DXF文件
  3. Java线程优先级与CPU执行机制
  4. 事件委托(代理/委派)
  5. 开放平台全网发布php,微信开放平台开发-受权、全网发布(PHP)
  6. ISE 工具下Flash芯片找不到时如何下载mcs文件
  7. 通过网络adb连接安卓设备传输文件
  8. liquivid Video Improve Mac破解教程
  9. 2021春招面经 Java岗
  10. F - Censor SCU - 4438(栈 + hash)