Android基础入门教程——7.5.4 WebView文件下载

标签(空格分隔): Android基础入门教程


本节引言

本节给大家介绍的是WebView下载文件的知识点,当我们在使用普通浏览器的时候,比如UC,
当我们点击到一个可供下载链接的时候,就会进行下载,WebView作为一个浏览器般的组件,
当然也是支持下载,我们可以自己来写下载的流程,设置下载后的文件放哪,以什么文件名
保存,当然也可以调用其它内置的浏览器来进行下载,比如Chrome,UC等等!
下面给大家演示下用法!


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

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

关键代码如下

wView.setDownloadListener(new DownloadListener(){@Overridepublic 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

/*** Created by Jay on 2015/9/14 0014.*/
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设置完所有东西的后面!!切记,不然什么都读不了!


本节小结:

本节非常简单,代码就不贴出了,其实就是setDownloadListener这个玩意,自己重写下
onDownloadStart方法来处理下载过程而已~,本节就到这里,谢谢~

Android基础入门教程——7.5.4 WebView文件下载相关推荐

  1. android设置webview缓存目录,Android基础入门教程——7.5.5 WebView缓存问题

    Android基础入门教程--7.5.5 WebView缓存问题 Android基础入门教程 本节引言:现在很多门户类信息网站,比如虎嗅,ifanr,钛媒体等等的APP,简单点说是信息阅读类的APP, ...

  2. 最新Android基础入门教程目录(完结版)

    第一章:环境搭建与开发相关(已完结 10/10) https://blog.csdn.net/coder_pig/article/details/50000773 Android基础入门教程--1.1 ...

  3. 2015年最新Android基础入门教程目录(完结版)

    2015年最新Android基础入门教程目录(完结版) 标签(空格分隔): Android基础入门教程 前言: 关于<2015年最新Android基础入门教程目录>终于在今天落下了帷幕,全 ...

  4. Android基础入门教程——7.4 Android调用WebService

    Android基础入门教程--7.4 Android调用WebService 标签(空格分隔): Android基础入门教程 本节引言: 经过前面的学习,数据请求,数据解析,文件上传下载等,应该满足大 ...

  5. android 编辑9图片,Android基础入门教程——1.6 .9(九妹)图片怎么玩

    Android基础入门教程--1.6 .9(九妹)图片怎么玩 Android基础入门教程 1.本节引言: 可能有的一些疑问: 1.什么是.9图片? 答:图片后缀名前有.9的图片,如pic1.9.png ...

  6. Android基础入门教程——4.3.1 BroadcastReceiver牛刀小试

    Android基础入门教程--4.3.1 BroadcastReceiver牛刀小试 标签(空格分隔): Android基础入门教程 本节引言 本节我们将来学习Android四大组件中的第三个:Bro ...

  7. Android基础入门教程——10.1 TelephonyManager(电话管理器)

    Android基础入门教程--10.1 TelephonyManager(电话管理器) 标签(空格分隔): Android基础入门教程 本节引言: 本章节是Android基础入门教程的最后一章,主要讲 ...

  8. Android基础入门教程——7.6.1 Socket学习网络基础准备

    Android基础入门教程--7.6.1 Socket学习网络基础准备 标签(空格分隔): Android基础入门教程 本节引言: 为了照顾没学过Java Socket的初学者,或者说捋一捋Andro ...

  9. Android基础入门教程——1.7 界面原型设计

    Android基础入门教程--1.7 界面原型设计 标签(空格分隔): Android基础入门教程 本节引言: 引用锤子科技视觉设计总监--罗子雄在重庆TEDx活动上说的一小段话: 每当我们看到一些美 ...

  10. Android基础入门教程——2.5.1 Toast(吐司)的基本使用

    Android基础入门教程--2.5.1 Toast(吐司)的基本使用 标签(空格分隔): Android基础入门教程 本节引言: 好的,终于学习完Adapter类相关的一些控件,当然除了讲解的那几个 ...

最新文章

  1. 库存事务处理现有量检查
  2. DataSet RecordSet 互转
  3. Unity热更新方案探索与讨论
  4. 洛谷1231 教辅的组成
  5. 摩根斯坦利面试题库_经验 | 金融公司摩根士丹利从笔试到实习的全程经验
  6. 笔记本电脑与漂亮老婆
  7. 2的负x次幂图像_数学| NO.2,3 函数 T15
  8. 485光隔离中继器产品特点及应用领域介绍
  9. os是android5.0,Funtouch OS 2.1曝光 完美改Android5.0
  10. 设计模式常见面试题汇总
  11. Nginx使用HTTPS建立与上游服务器的网络通信
  12. 关于int类型除以1000后保留两位小数的问题,并且在excel里打印出来
  13. 几种常见单例的写法和问题
  14. spoj4487(splay)
  15. 装WIN7u盘启动盘制作详细图文教程
  16. POJ 1179 Polygon
  17. python中类名(..)(..)的情况及_call_函数解析
  18. 拾贰SparkSQL:数据关联优化
  19. 自学编程的人,90%以上都会掉进这些坑,避开这些误区能提高N倍学习效率
  20. 河南科技学院教务管理系统服务器,河南科技学院教务管理系统:http://jwc.hist.edu.cn...

热门文章

  1. 用firework中合并图标的方法
  2. 烽火狼烟丨Microsoft多个安全漏洞风险提示
  3. 设计模式之UML画图
  4. HFT-CNN:层级多标签分类,让你的模型多学习几次
  5. mysql unzip下载_zip unzip 命令
  6. 客户跟进中的一些小技巧
  7. html英文期刊参考文献,外文期刊参考文献标准格式
  8. 台式电脑主机前面耳机插孔没声音的解决方法
  9. DDC传输协议以及显示器EDID结构介绍
  10. Installshield2008教程