WebView使用_WebView监听网页下载_DownloadManager使用
最近在做一个较简单的项目:通过一个webview来显示一个网页的App
这个网页有下载的功能,关于这一功能需要用到两个知识点:
1、webview监听网页的下载链接。(webview默认情况下是没有开启,在这个情况下,你会发现,在浏览器上可以正常下载的网页里的某个点击。在你的webview里面,点击是没有反应的);
2、使用系统的DownloadManager进行下载。
提前说下,在这两个小知识点遇到的坑:
1、第一个坑,就是前面说的,需要Webview开启下载监听,否则,你会发现,点击下载,没有反应。
extends Activity implements DownloadListener //这里某个类实现这个下载监听
@Override
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype, long contentLength) {
startDownload(url);
}
2、第二个坑,已经开启下载监听,但是依旧点击没有反应。并且,这个网站在pc浏览器上,点击相应的下载链接,能够下载。这会儿就陷入巨坑,紧接着要抓狂了。不断的查看是不是自己少写了什么。不过包括看了API也就这两行代码。最后在Android的浏览器上面发现也不能够下载,这会儿我就理直气壮得找网页开发端,告诉他们,你们的网页不能够下载。他们的解决办法就是将这个下载链接新开一个页签。结果神奇得可以了。安卓浏览器能够正常得下载网页相应的链接,我的webview也就能够监听到网页下载点击事件。
能够监听到下载点击事件,那么接下来就是使用这个监听到的url进行下载。起初我想到的是像远程更新APP一样的方案:通过一个IO,将文件下载到指定的文件路径,然后通过Intent进行安装。显然这样可以,不过过于麻烦,因为系统提供了DownloadManager比较简单。代码如下:
private void startDownload(String url) {
dm = (DownloadManager) this.getSystemService(Context.DOWNLOAD_SERVICE);
DownloadManager.Request request = new DownloadManager.Request(
Uri.parse(url));
request.setMimeType("application/vnd.android.package-archive");
request.setVisibleInDownloadsUi(true);
request.setDestinationInExternalFilesDir(this,
Environment.DIRECTORY_DOWNLOADS, "fileName");
enqueue = dm.enqueue(request);
}
3、第三个坑就是,插入了这段代码后,貌似可以下载了。为什么说貌似呢,因为手机顶部已经能够看到
这个下载的标志,但是没有多久就消失了。并且下拉看不到已下载的项目,此时,就无从点击安装下载的app。经过抓狂,以及最后的沉着冷静,最后发现,只要添加上一段代码就可以了。
private void startDownload(String url) {
dm = (DownloadManager) this.getSystemService(Context.DOWNLOAD_SERVICE);
DownloadManager.Request request = new DownloadManager.Request(
Uri.parse(url));
request.setMimeType("application/vnd.android.package-archive");
request.setVisibleInDownloadsUi(true);
request.setDestinationInExternalFilesDir(this,
Environment.DIRECTORY_DOWNLOADS,"fileName");
//添加下面这段代码 //添加下面这段代码
request.setNotificationVisibility(Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
enqueue = dm.enqueue(request); }
此时就能够在下拉,看到所下载的项目,点击,对下载的app进行安装。
至此实现了:
1、webview监听网页的下载链接。
2、使用系统的DownloadManager进行下载。
WebView使用_WebView监听网页下载_DownloadManager使用的更多相关文章
- plus webview关闭事件监听
plus.webview.currentWebview().addEventListener("close",function(){ },false);
- js监听网页页面滑动滚动事件,实现导航栏自动显示或隐藏
/** * 页面滑动滚动事件 * @param e *///0为隐藏,1为显示var s = 1;function scrollFunc(e) { // e存在就用e不存在就用windon.event ...
- webview长按事件js监听
做app开发时,用到了webview,需要监听webview的长按事件,使用原生的js处理监听如下: ; //定时器 //开始按 function gtouchstart() { timeOutEve ...
- iOS-WKWebview 带有进度条加载的ViewController【KVO监听Webview加载进度】
前言 为什么要说 WKWebview,在之前做电子书笔记时已经提过 WKWebview 在iOS8之后已完全替代 Webview,原因就不多说了,主要还是内存过大: 封装 封装一个基于 UIViewC ...
- WebView使用详解(二)——WebViewClient与常用事件监听
登录|注册 关闭 启舰 当乌龟有了梦想…… 目录视图 摘要视图 订阅 异步赠书:Kotlin领衔10本好书 免费直播:AI时代,机器学习如何入门? 程序员8 ...
- 背水一战 Windows 10 (66) - 控件(WebView): 监听和处理 WebView 的事件
[源码下载] 背水一战 Windows 10 (66) - 控件(WebView): 监听和处理 WebView 的事件 作者:webabcd 介绍背水一战 Windows 10 之 控件(WebVi ...
- 从网页监听Android设备的返回键
最近搞Android项目的时候,遇到一个比较蛋疼的需求,需要从Client App调用系统浏览器打开一个页面,进行杂七杂八的一些交互之后,返回到App.如何打开浏览器和如何返回App这里就不说了,有兴 ...
- Android监听WebView滑动到底部
MainActivity如下: package cn.testwebview; import android.app.Activity; import android.graphics.Bitmap; ...
- 微信浏览器返回刷新,监听微信浏览器返回事件,网页防复制,移动端禁止图片长按和vivo手机点击img标签放大图片
以下代码都经过iphone7,华为MT7 ,谷歌浏览器,微信开发者工具,PC端微信验证.如有bug,还请在评论区留言. demo链接:https://pan.baidu.com/s/1c35mbjM ...
随机推荐
- 移动端(处理边距样式)reset.css
移动端reset.css,来自张鑫旭网站的推荐,下载地址:https://huruqing.gitee.io/demos/source/reset.css 代码 /* html5doctor.com ...
- 集群环境下定时调度的解决方案之Quartz集群
集群环境可能出现的问题 在上一篇博客我们介绍了如何在自己的项目中从无到有的添加了Quartz定时调度引擎,其实就是一个Quartz 和Spring的整合过程,很容易实现,但是我们现在企业中项目通常都是 ...
- Zabbix安装部署(CentOS系统下)
zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统 ...
- JavaSE基础知识(5)—面向对象(5.2类的成员)
一.属性 1.语法 数据类型 属性名 [= 属性值]; 2.特点 ①属性的数据类型可以为任意类型,包含基本类型或引用类型②属性可以不用手动赋值,有默认值 int——0 double——0.0 char ...
- git 忽略文件不起作用
本人需要提交项目文件,发现总有一些东西不需要提交,然后搜索有”.gitignore”文件可以忽略一些提交,但是发现添加上没有起作用. 要贴的是: /build/ target/ .idea/ *.im ...
- ubuntu中运行java程序
查找jdk rivsidn@rivsidn:~/demo/java$ sudo apt-cache search jdk default-jdk - Standard Java or Java com ...
- [杂谈]杂谈章3 JAVA中如何用自动注入
PART1 加配置文件 创建自动加载bean的配置文件 <beans xmlns="http://www.springframework.org/schema/beans" ...
- C++ 提取网页内容系列之一
标 题: C++ 提取网页内容系列作 者: itdef链 接: http://www.cnblogs.com/itdef/p/4171179.html 欢迎转帖 请保持文本完整并注明出处 首先分析网页 ...
- SQL里执行CLR c#代码
这里只说一个重点: 1.直接在sql里执行clr代码的时候,sql还是会报错 说没有启用 clr 执行以下代码才会起作用 EXEC sp_configure 'clr enabled', 1; RE ...
- DL_1_week2_神经网络基础
二分类问题 在二分分类问题中,目标是训练出一个分类器,这里以图片特征向量x作为输入,预测输出的结果标签y是1还是0,也就是预测图片中是否有猫. 计算机保存一张图片(彩色),要保存三个 ...