android webview 文件下载,7.5.4 WebView文件下载
本节引言
本节给大家介绍的是WebView下载文件的知识点,当我们在使用普通浏览器的时候,比如UC,
当我们点击到一个可供下载链接的时候,就会进行下载,WebView作为一个浏览器般的组件,
当然也是支持下载,我们可以自己来写下载的流程,设置下载后的文件放哪,以什么文件名
保存,当然也可以调用其它内置的浏览器来进行下载,比如Chrome,UC等等!
下面给大家演示下用法!
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
/**
* Created by Jay on 2015/9/14 0014.
*/
public class DownLoadThread implements Runnable {
private String dlUrl;
public DownLoadThread(String dlUrl) {
this.dlUrl = dlUrl;
}
@Override
public 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(){
@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卡可以看到,下载好的文件已经安安静静地躺在SD卡里了:
注意事项:
好的,另外,别忘了写SD卡的读写权限以及Internet访问网络的权限:
还有,in = conn.getInputStream();要写在conn设置完所有东西的后面!!切记,不然什么都读不了!
本节小结:
本节非常简单,代码就不贴出了,其实就是setDownloadListener这个玩意,自己重写下
onDownloadStart方法来处理下载过程而已~,本节就到这里,谢谢~
android webview 文件下载,7.5.4 WebView文件下载相关推荐
- Android Fragment使用(三) Activity, Fragment, WebView的状态保存和恢复
Android中的状态保存和恢复 Android中的状态保存和恢复, 包括Activity和Fragment以及其中View的状态处理. Activity的状态除了其中的View和Fragment的状 ...
- Android爬坑之旅之WebView
不知不觉,Hybird App已经成了目前比较主流的一种开发方式. 对于用户体验要求较高或者与硬件交互较多的功能我们一般都会采用Native原生的方式来实现. 而用户交互少,偏展示类,活动类的功能我们 ...
- android 获取位置数据库,尝试从webview获取位置时,Android“SQLite数据库无法从/CachedGeoposition.db加载”错误...
我正在创建一个使用webkit和chrome客户端的android应用程序.我希望能够在网页请求时获取当前位置.我设置的网页适用于普通浏览器就好了.然而,当我尝试访问该网页WebKit中,我不断收到此 ...
- android 加载显示富文本——TextView显示富文本和WebView显示富文本,WebView显示图片适配屏幕宽度
TextView加载显示 添加依赖 implementation 'com.zzhoujay.richtext:richtext:3.0.8' implementation 'com.zzhoujay ...
- Android 系统(275)---Mtk Webview基本问题
Mtk Webview基本问题 1.Mtk Webview的作用: MTK内部load都是双webview配置.其中mtk webview主要是给mtk browser使用.里面主要是对browser ...
- android webview_在 Flutter 中使用 WebView
本文示例代码可在微信公众号「01二进制」后台回复「WebView」查看下载 前言 我们知道在开发 Native App 时经常会有打开网页的需求,可供的选择通常只有两种: 在 App 内部打开网页 通 ...
- Android开发笔记(六十一)文件下载管理DownloadManager
下载管理DownloadManager 文件下载其实是网络数据访问的一种特殊形式,使用普通的http请求也能完成,就是实现起来会繁琐一些.因为下载功能比较常用,而且业务功能相对统一,所以从Androi ...
- 【Android开发】Android Studio中进行简单的WebView构建浏览器开发1
[Android开发]Android Studio中进行简单的WebView构建浏览器开发 第一步:新建一个Android Project 第二步:修改AndroidMainfest.xml文件 第三 ...
- 【Android开发】Android Studio中进行简单的WebView构建浏览器开发2
[[Android开发]Android Studio中进行简单的WebView构建浏览器开发2 第1步:在上一篇博客的基础上,修改activity_main.xml 第2步:在MainActivity ...
- Android开发基础之控件WebView
WebView可以实现如下功能: 加载本地assets文件夹下的html文件 wedview.loadUrl("file:///android_asset/test.html"); ...
最新文章
- 微软发布Visual Studio 2017 15.8
- 剑指offer:第一个只出现一次的字符
- ASP.NET MVC Display Mode 移动端视图 配置对微信内置浏览器的识别
- python字符串用法_笔记:python字符串的使用
- 释放只有声明没有定义的对象,都是耍流氓
- 微信h5实现分享给朋友url改变_h5微信自定义分享
- java 抽象类与接口的区别及其在jdk中的应用
- 解决小键盘灯不亮的方法
- 2068个开源的网站模板【免费下载】
- 「熊猫」变「长臂猿」,「乌龟」变「来复枪」,深度学习模型被攻击,破解之道有哪些?
- acm-(dp计数)Educational Codeforces Round 97 (Rated for Div. 2) F. Emotional Fishermen
- 终结版水与油——致我献给魔术的青春
- 课堂纪律一团糟老师应该怎么办?
- JPA+Hibernate中常用的注解
- 【用户画像】功能实现值写入ClickHouse人群包、预估和更新分群人数,NoSQL数据库介绍
- C#|Winform编程之(列表视图控件)listView控件
- 纳米数据世界杯足球数据api接口,体育数据api接口,实时比分接口示例演示,数据推送
- js如何判断保留两位小数
- vue中遍历呈现数据
- 美国博士后|国外生活常识介绍