WebView 监听 H5 下载
需求
在 APP 首页轮播图点击跳转到 WebView ,在 webView 中点击链接下载新版 APP
问题
如果直接传递 APP 在应用宝上的网址,在 WebView 中加载完之后点击网页上的按钮没有反应,不跳浏览器也不提示下载应用宝或者跳转应用宝。原因是:为 WebView 重新设置了 WebViewClient 之后会导致 WebView 自身支持网页唤起的功能失效。
针对下载需要设置一个 setDownloadListener 来监听获取到的链接是否是下载链接!但测试发现监听只能获取到 APP 的下载动作,无法监听到应用宝的监听动作,需要后续再查找原因吧。
由于在应用中需要设置 WebView 加载页面的标题,所以必须设置 WebViewClient。为避免 WebView 自身唤起浏览器的功能失效,改用 WebChromeClient 实现头部标题设置,不再设置 WebViewClient。
方法
方法1
捕获链接跳转应用市场
mWebView.setWebViewClient(new WebViewClient() {//监听webview的链接点击@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {Log.e("Url", "Url ===" + url);if ("https://a.app.qq.com/o/simple.jsp?pkgname=yourpkgname".equals(url)){//此处记得替换对应包名try {Uri uri = Uri.parse("market://details?id=yourpkgname");Intent intent = new Intent(Intent.ACTION_VIEW, uri);intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent);} catch (Exception e) {ToastUtils.showToast("检测不到应用市场");e.printStackTrace();}}else {view.loadUrl(url);}return true;}
}
方法2
设置下载监听,跳转浏览器下载
mWebView.setDownloadListener(new DownloadListener() {@Overridepublic void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {Intent intent = new Intent(Intent.ACTION_VIEW);Uri uri = Uri.parse(url);intent.addCategory(Intent.CATEGORY_BROWSABLE);intent.setData(uri);startActivity(intent);}
});
方法3
不设置WebViewClient,使用webview自带的功能唤起浏览器,将下载工作交给浏览器完成。
mWebView.setWebChromeClient(new WebChromeClient(){@Overridepublic void onReceivedTitle(WebView view, String title) {super.onReceivedTitle(view, title);titleTv.setText(view.getTitle());}
});
至此,问题算是解决啦。这里先记录下解决的方法,感觉关于webview的认识有了更进一步的了解,不过还有一些需要补充了解的知识。
WebView 监听 H5 下载相关推荐
- Android查看web日志,详解Android WebView监听console错误信息
根据需求,我们要拿到h5的错误信息,并将error信息进行上报.查询了下Android WebView的API发现了WebChromeClient这个方法可以满足要求: @Override publi ...
- iOS OC与JS交互(WebView监听事件)
在iOS应用的开发过程中,我们经常会使用到WebView,当我们对WebView进行操作的时候,有时会需要进行源生的操作.那么我记下来就与大家分享一下OC与JS交互. 首先先说第一种方法,并没有牵扯O ...
- iOS小技能:监听H5页面goBack返回事件 网页监听APP返回键 (NavigationBackItemInjection)
文章目录 引言 I . iOS监听H5页面goBack返回事件 1.1 UIWebView 监听H5页面goBack返回事件 1.2 WKWebView监听H5页面goBack返回事件 II. 网页监 ...
- android webview 监听js,Android webview与js的数据交互
项目要用到Webview和js交互,查了查以前的项目感觉还是有必要整理下的. 简单描述下项目中用到的地方,比如说在web页需要用到登录的地方点击登录跳转到APP原生登录界面去登录,点击web页的拨打电 ...
- android 监听 h5 window,H5嵌入APP后,通过window.WebViewJavascriptBridge原生APP与H5之间交互...
下面从H5的角度记录交互思路: 1:安卓环境和ios环境稍微有点不同,需要根据navigator.userAgent判断一下当前环境 2:仍然是APP环境不同,安卓需要进行兼容性判断,如果不存在win ...
- WebView监听网页加载成功与失败
问题说明: 现在好多APP在应用中会内嵌webview,好多时候需要监听webview是否加载成功与失败.当加载成功的时候会回调WebViewClient的onPageFinished方法:当加载失败 ...
- vue监听h5页面返回健(微信和支付宝浏览器亲测):
1.挂载完成后,判断浏览器是否支持popstate mounted(){ if (window.history && window.history.pushState) { histo ...
- Android WebView监听console错误信息
根据需求,我们要拿到h5的错误信息,并将error信息进行上报.查询了下Android WebView的API发现了WebChromeClient这个方法可以满足要求: @Overridepublic ...
- android webview监听软键盘弹出和隐藏来修改虚拟导航栏颜色
最近项目中用到了webview,然后里面有输入框,当我们点击输入框的时候,软键盘挡住了布局,这就尴尬了,并且产品说,只有在软键盘弹出的时候底部的虚拟导航栏为黑色,软键盘隐藏的时候虚拟导航栏应该也隐藏. ...
- android 监听webView滑动距离和标题栏颜色渐变
重写webView之 X5WebView import android.annotation.SuppressLint; import android.content.Context; import ...
最新文章
- mysql 自定义提示符
- easyui filebox 文件上传
- 计算同比 环比_PowerBI学习教程(三)时间累积同比环比计算
- 常见概率分布的Matplotlib实现
- [周赛][Leetcode][第5457题][JAVA][动态规划][和为奇数的子数组数目]
- IO流--buffer
- 20160205.CCPP体系详解(0015天)
- 读DS18B20序列号(c语言)
- wxWidgets第三课 MSWWindowProc处理窗口消息
- mysql数据库中 pri_MySQL数据库管理——SQL指令集
- 打开应用中SQLite文件的方法
- 科研笔记2:科技论文作图规范
- 机器学习笔记 - Moore-Penrose 伪逆
- word里的图片用计算机画图,word绘图教程:图形工具介绍和使用方法-word技巧-电脑技巧收藏家...
- 内网渗透靶场 Vulnstack(二)
- 有关学术界的治理-来自学术道德通论课程作业
- 最短路径之Bellman-Ford
- ln的c语言表达式,c程序中语句中如何表示ln函数?
- 安装busybox步骤
- 【Windows 安装JDK8】如何安装java JDK8