Android例子—WebView文件下载
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文件下载相关推荐
- Android 获取WebView的内容宽度高度
转自:http://www.android100.org/html/201311/19/4804.html Android开发时,从WebView,我不但想要知道ContentHeight,还想知道C ...
- Android中WebView加载本地Html,与JavaScript与Android方法相互传值(续)...
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010046908/article/details/51809558 接着上篇Android中Web ...
- Android【WebView】
WebView全面解析 简介 WebView是android中一个非常重要的控件,它的作用是用来展示一个web页面.它使用的内核是webkit引擎,4.4版本之后,直接使用Chrome作为内置网页浏览 ...
- android封装浏览器,android利用WebView实现浏览器的封装
android提供了封装浏览器的接口,可以让开发者利用自己的view显示网页内容.今天又实现研究了一下,利用WebView显示浏览器内容,还可以利用 WebViewClient显示自己需要的内容. 效 ...
- 的Android组件、工具、框架大全(转) android 学习 android 例子 android 开源项目
2015最流行的Android组件.工具.框架大全(转) 转自:2015最流行的Android组件.工具.框架大全 Android 是目前最流行的移动操作系统之一. 随着新版本的不断发布, Andro ...
- Android中WebView使用6,js调java实现播放视频
效果图 项目结构: 核心代码: JsCallJavaVideoActivity中 package com.zhh.android;import android.app.Activity; import ...
- android webview兼容华为,三星、华为等android里webview不支持input file的解决方法
三星.华为等android里webview不支持input file的解决方法 分类:软件问题| 发布:佚名| 查看: | 发表时间:2014/5/16 由于安全因素android webview屏蔽 ...
- Android使用WebView加载网页及数据
今天主要介绍一下Android的一个原生组件-WebView. 在Api中关于这个类的介绍大致就是这是一个可以显示网页的视图,如: webView.loadUrl("http://www.b ...
- android使用webview时按后退退出的问题
使用webview打包图片站点http://www.gg4493.cn,代码都好了,具体如下 public class MainActivity extends ActionBarActivity { ...
最新文章
- Android系统原理与源码分析(1):利用Java反射技术阻止通过按钮关闭对话框
- XDC约束技巧——CDC篇
- [有限元] DistMesh Matlab 程序示例
- C#算法设计排序篇之04-选择排序(附带动画演示程序)
- Visual studio 的教程
- 人间值得!支付宝宣布平台上登记器官捐献人数:90后占比超一半
- android 应用使用Root权限执行linux命令
- 容器技术Docker K8s 21 容器服务ACK基础与进阶-存储管理
- 畅谈无线通信系统物理层之系统概述
- imx6ull ccm时钟体系
- 云计算机教室优缺点,云教室和传统机房的区别,终于有人把它说清了
- android gps开发必备资料(含测试demo下载)
- Windows环境下edge浏览器点击下载没有反应
- html四边形布局,canvas四边形.html
- android中bmob云存储,Android中的Bmob移动后端云服务器功能
- Python自动切换wifi
- test %eax %eax
- c语言输入名字判断姓是否缩写,C语言复习笔记
- 深度学习应用13电影评论情感分析
- Python调用PHP的函数