需求

在 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 下载相关推荐

  1. Android查看web日志,详解Android WebView监听console错误信息

    根据需求,我们要拿到h5的错误信息,并将error信息进行上报.查询了下Android WebView的API发现了WebChromeClient这个方法可以满足要求: @Override publi ...

  2. iOS OC与JS交互(WebView监听事件)

    在iOS应用的开发过程中,我们经常会使用到WebView,当我们对WebView进行操作的时候,有时会需要进行源生的操作.那么我记下来就与大家分享一下OC与JS交互. 首先先说第一种方法,并没有牵扯O ...

  3. iOS小技能:监听H5页面goBack返回事件 网页监听APP返回键 (NavigationBackItemInjection)

    文章目录 引言 I . iOS监听H5页面goBack返回事件 1.1 UIWebView 监听H5页面goBack返回事件 1.2 WKWebView监听H5页面goBack返回事件 II. 网页监 ...

  4. android webview 监听js,Android webview与js的数据交互

    项目要用到Webview和js交互,查了查以前的项目感觉还是有必要整理下的. 简单描述下项目中用到的地方,比如说在web页需要用到登录的地方点击登录跳转到APP原生登录界面去登录,点击web页的拨打电 ...

  5. android 监听 h5 window,H5嵌入APP后,通过window.WebViewJavascriptBridge原生APP与H5之间交互...

    下面从H5的角度记录交互思路: 1:安卓环境和ios环境稍微有点不同,需要根据navigator.userAgent判断一下当前环境 2:仍然是APP环境不同,安卓需要进行兼容性判断,如果不存在win ...

  6. WebView监听网页加载成功与失败

    问题说明: 现在好多APP在应用中会内嵌webview,好多时候需要监听webview是否加载成功与失败.当加载成功的时候会回调WebViewClient的onPageFinished方法:当加载失败 ...

  7. vue监听h5页面返回健(微信和支付宝浏览器亲测):

    1.挂载完成后,判断浏览器是否支持popstate mounted(){ if (window.history && window.history.pushState) { histo ...

  8. Android WebView监听console错误信息

    根据需求,我们要拿到h5的错误信息,并将error信息进行上报.查询了下Android WebView的API发现了WebChromeClient这个方法可以满足要求: @Overridepublic ...

  9. android webview监听软键盘弹出和隐藏来修改虚拟导航栏颜色

    最近项目中用到了webview,然后里面有输入框,当我们点击输入框的时候,软键盘挡住了布局,这就尴尬了,并且产品说,只有在软键盘弹出的时候底部的虚拟导航栏为黑色,软键盘隐藏的时候虚拟导航栏应该也隐藏. ...

  10. android 监听webView滑动距离和标题栏颜色渐变

    重写webView之 X5WebView import android.annotation.SuppressLint; import android.content.Context; import ...

最新文章

  1. mysql 自定义提示符
  2. easyui filebox 文件上传
  3. 计算同比 环比_PowerBI学习教程(三)时间累积同比环比计算
  4. 常见概率分布的Matplotlib实现
  5. [周赛][Leetcode][第5457题][JAVA][动态规划][和为奇数的子数组数目]
  6. IO流--buffer
  7. 20160205.CCPP体系详解(0015天)
  8. 读DS18B20序列号(c语言)
  9. wxWidgets第三课 MSWWindowProc处理窗口消息
  10. mysql数据库中 pri_MySQL数据库管理——SQL指令集
  11. 打开应用中SQLite文件的方法
  12. 科研笔记2:科技论文作图规范
  13. 机器学习笔记 - Moore-Penrose 伪逆
  14. word里的图片用计算机画图,word绘图教程:图形工具介绍和使用方法-word技巧-电脑技巧收藏家...
  15. 内网渗透靶场 Vulnstack(二)
  16. 有关学术界的治理-来自学术道德通论课程作业
  17. 最短路径之Bellman-Ford
  18. ln的c语言表达式,c程序中语句中如何表示ln函数?
  19. 安装busybox步骤
  20. 【Windows 安装JDK8】如何安装java JDK8

热门文章

  1. 【一起学习输入法】华宇拼音输入法开源版本解析(7)
  2. 磁性能测试标准和项目有哪些
  3. 头脑王者源码微信答题小程序pk知识问答源码介绍
  4. 修改Idea的jdk版本
  5. 优酷kux视频文件转换成mp4格式
  6. opencv-图像平滑处理
  7. Matlab【光学】波动光光学系统
  8. 【科普向】5G核心网架构和关键技术
  9. STVP下载STM8单片机提示Verify error at address 0xxxxx的问题解决
  10. 课程设计:89C51单片机实现六位密码锁