Android中WebView,打开第三方应用的问题
可以通过网页打开第三方应用,这个iOS和Android都可以做到,通过自定义的schema。说这个的网上有一大堆,这里就不赘述了。
比如,乐视手机网站,有app专享片源,你使用UC浏览器打开他的网页,点击指定节目的时候,就会弹出他的客户端,开始播放节目。
观察点击海报的url,是形如“letv://xxxxxx/xxxxxx”的跳转地址,显然不是一个网页,是没办法直接跳转的。
搜狐视频网页也是一样的。
那么问题来了,UC可以做到,但是自己的WebView不行。
使用WebView加载“letv://xxxxxx/xxxxxx”这个地址时,会直接报错,说这个url打不开。
显然时应该对非http开头的url做一些处理的。但应该在哪里加处理呢?
查官方的API, 如果希望点击链接由自己处理,而不是新开android的系统browser中响应该链接。
可以给WebView添加一个事件监听对象(WebViewClient)并重写其中的一些方法:shouldOverrideUrlLoading:对网页中超链接按钮的响应。
总体思想就是拿到url之后,先自己过滤一下,可以自定义一些处理方式。
如果自己处理了,就return true,后续处理就不会再管这个url了;否则返回false,交给后面继续执行。类似MediaPlayer的onError。
好吧,就把我处理的代码片段贴上来吧,以作备忘。
- mWebView.setWebViewClient(new WebViewClient() {
- public boolean shouldOverrideUrlLoading(WebView view, String url) {
- Log.d("shouldOverrideUrlLoading", url);
- // 处理自定义scheme
- if (!url.startsWith("http")) {
- Log.i("shouldOverrideUrlLoading", "处理自定义scheme");
- Toast.makeText(mContext, "需要下载客户端收看", Toast.LENGTH_LONG)
- .show();
- try {
- // 以下固定写法
- final Intent intent = new Intent(Intent.ACTION_VIEW,
- Uri.parse(url));
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
- | Intent.FLAG_ACTIVITY_SINGLE_TOP);
- mContext.startActivity(intent);
- } catch (Exception e) {
- // 防止没有安装的情况
- e.printStackTrace();
- }
- return true;
- }
- return false;
- }
- @Override
- public void onReceivedError(WebView view, int errorCode,
- String description, String failingUrl) {
- // Auto-generated method stub
- super.onReceivedError(view, errorCode, description, failingUrl);
- }
- @Override
- public void onPageFinished(WebView view, String url) {
- // Auto-generated method stub
- super.onPageFinished(view, url);
- }
- @Override
- public void onPageStarted(WebView view, String url, Bitmap favicon) {
- // Auto-generated method stub
- super.onPageStarted(view, url, favicon);
- }
- });
Android中WebView,打开第三方应用的问题相关推荐
- 解决vue在ios或android中用webview打开H5链接时#号后面的参数被忽略问题angular同样适用
解决vue在ios或android中用webview打开H5链接时#号后面的参数被忽略问题angular同样适用 参考文章: (1)解决vue在ios或android中用webview打开H5链接时# ...
- Android中WebView加载sdcard中的html时提示:ERR_FILE_NOT_FOUND和ERR_ACCESS_DENIED
场景 Android中WebView加载sdcard中的html显示: Android中WebView加载sdcard中的html显示_BADAO_LIUMANG_QIZHI的博客-CSDN博客 在实 ...
- Android中WebView加载本地Html,与JavaScript与Android方法相互传值(续)...
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010046908/article/details/51809558 接着上篇Android中Web ...
- android webview调js方法,Android中WebView与H5的交互,Native与JS方法互调
项目中经常用到WebView与H5的交互,一个是H5调本地方法,一个是本地调H5方法,在此记录一下. 首先,启用JS支持 //启用js支持 webSettings.setJavaScriptEnabl ...
- android屏蔽表情输入法,Android中EditText屏蔽第三方输入法表情的方法示例
前言 众所周知如果用第三方的输入法的表情会给开发带来一定的麻烦,一般地像服务器上传的字符都是普通的字符,但是测试,就是狠狠得拿出搜狗输入法,点几个表情,那么问题就来了,要么是显示异常,要么是直接cra ...
- Android中webview拨打加载网页中的电话超链接
wv_main = find(R.id.wv_main);//实例化webview wv_main.loadUrl(url); //启用支持javascript WebSettings setting ...
- Android中WebView的跨域漏洞分析和应用被克隆问题情景还原(免Root获取应用沙盒数据)...
一.前言 去年年底支付宝的被克隆漏洞被爆出,无独有偶就是腾讯干的,其实真正了解这个事件之后会发现,感觉是针对支付宝.因为这个漏洞找出肯定花费了很大劲,主要是因为支付宝的特殊业务需要开启了WebView ...
- android封装全局调用的toast_【Android】Android中WebView实现Java与JS交互
现在混合式开发是大趋势,H5不断蚕食移动互联网的份额,有的公司甚至只用H5就搞了一个APP,我们搞Android的不说会点H5,至少要懂怎么和H5(和JavaScript)交互,费话不多说. 一.先看 ...
- android webview 弹出浏览器,android – 防止WebView打开浏览器
我已经为给定的WebView启用了JavaScript,并在WebView中打开了新链接,而不是在浏览器中. 这是主要活动 package com.Afrogfx.pronouns; import a ...
最新文章
- 查看centos中mysql的日志的命令_CentOS系统中常用查看日志命令
- templates的语法
- 无锁数据结构三:无锁数据结构的两大问题
- 题解【黑匣子_NOI导刊2010提高(06)】(洛谷P1801)
- 阿里格林深瞳计算机视觉岗实习面经
- AI分析猪叫声中的情绪,“贾维斯”“大白”会不会照进现实?
- [csp-201809-4]再卖菜 差分约束or记忆化搜索
- 分布式缓存的面试题2
- 安徽省c语言程序设计省二题库,C语言程序设计题库二.pdf
- 海量数据存储的解决方案(分布式数据库)
- matlab-基础 取整函数 向0取整 取最近整数 向上取整 向下取整
- 技术经理、架构师、技术总监、VP、CTO,这些岗位都是如何挣出来
- epub、ocf等常用电子书格式浅析----附JAVA示例程序
- 上传webshell(入侵目标页面主机靶机演示)
- Unable to load shared library ‘libgdiplus‘ or one of its dependencies
- 编程中的24条经典语录
- 【IntelliJ IDEA】UTF-8编码下\u7528\u6237转换为中文汉字,\u9489\u9489\u81EA\u5B9A\u4E49\(Unicode字符与中文的相互转化)
- 转:詹姆斯·马奇:领导者容易把自己看成是组织中的英雄
- 2022兴福村镇银行人员招聘专项练习题及答案
- CAD/CASS断面偏距高程高差批量标注插件(可自动避让、横向或纵向标注)
热门文章
- 数字温湿度传感器DHT11
- 云麦体脂秤华为体脂秤_如果是一个真正的体脂秤就好了:华为智能体脂秤
- 微型计算机常见接口设备,微型计算机的外部设备和内部设备各有哪些?
- mysql eav_数据库设计之EAV(实体、属性、值)
- ctfshow MengXIn 下(pearcmd.php妙用条件竞争简单密码简单misc)
- CUDA 学习(CUDA实战 第四章)
- arduino数字端口输出电压可驱动多大继电器呢_单片机实例分享,自制数字示波器...
- 微信二维码1-服务号推广(将网页存储为图片存储到服务器)
- ppt关闭受保护视图
- 交互题 XOR Guessing