可以通过网页打开第三方应用,这个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。

好吧,就把我处理的代码片段贴上来吧,以作备忘。

[java] view plaincopy
  1. mWebView.setWebViewClient(new WebViewClient() {
  2. public boolean shouldOverrideUrlLoading(WebView view, String url) {
  3. Log.d("shouldOverrideUrlLoading", url);
  4. // 处理自定义scheme
  5. if (!url.startsWith("http")) {
  6. Log.i("shouldOverrideUrlLoading", "处理自定义scheme");
  7. Toast.makeText(mContext, "需要下载客户端收看", Toast.LENGTH_LONG)
  8. .show();
  9. try {
  10. // 以下固定写法
  11. final Intent intent = new Intent(Intent.ACTION_VIEW,
  12. Uri.parse(url));
  13. intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
  14. | Intent.FLAG_ACTIVITY_SINGLE_TOP);
  15. mContext.startActivity(intent);
  16. } catch (Exception e) {
  17. // 防止没有安装的情况
  18. e.printStackTrace();
  19. }
  20. return true;
  21. }
  22. return false;
  23. }
  24. @Override
  25. public void onReceivedError(WebView view, int errorCode,
  26. String description, String failingUrl) {
  27. // Auto-generated method stub
  28. super.onReceivedError(view, errorCode, description, failingUrl);
  29. }
  30. @Override
  31. public void onPageFinished(WebView view, String url) {
  32. // Auto-generated method stub
  33. super.onPageFinished(view, url);
  34. }
  35. @Override
  36. public void onPageStarted(WebView view, String url, Bitmap favicon) {
  37. // Auto-generated method stub
  38. super.onPageStarted(view, url, favicon);
  39. }
  40. });

Android中WebView,打开第三方应用的问题相关推荐

  1. 解决vue在ios或android中用webview打开H5链接时#号后面的参数被忽略问题angular同样适用

    解决vue在ios或android中用webview打开H5链接时#号后面的参数被忽略问题angular同样适用 参考文章: (1)解决vue在ios或android中用webview打开H5链接时# ...

  2. Android中WebView加载sdcard中的html时提示:ERR_FILE_NOT_FOUND和ERR_ACCESS_DENIED

    场景 Android中WebView加载sdcard中的html显示: Android中WebView加载sdcard中的html显示_BADAO_LIUMANG_QIZHI的博客-CSDN博客 在实 ...

  3. Android中WebView加载本地Html,与JavaScript与Android方法相互传值(续)...

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010046908/article/details/51809558 接着上篇Android中Web ...

  4. android webview调js方法,Android中WebView与H5的交互,Native与JS方法互调

    项目中经常用到WebView与H5的交互,一个是H5调本地方法,一个是本地调H5方法,在此记录一下. 首先,启用JS支持 //启用js支持 webSettings.setJavaScriptEnabl ...

  5. android屏蔽表情输入法,Android中EditText屏蔽第三方输入法表情的方法示例

    前言 众所周知如果用第三方的输入法的表情会给开发带来一定的麻烦,一般地像服务器上传的字符都是普通的字符,但是测试,就是狠狠得拿出搜狗输入法,点几个表情,那么问题就来了,要么是显示异常,要么是直接cra ...

  6. Android中webview拨打加载网页中的电话超链接

    wv_main = find(R.id.wv_main);//实例化webview wv_main.loadUrl(url); //启用支持javascript WebSettings setting ...

  7. Android中WebView的跨域漏洞分析和应用被克隆问题情景还原(免Root获取应用沙盒数据)...

    一.前言 去年年底支付宝的被克隆漏洞被爆出,无独有偶就是腾讯干的,其实真正了解这个事件之后会发现,感觉是针对支付宝.因为这个漏洞找出肯定花费了很大劲,主要是因为支付宝的特殊业务需要开启了WebView ...

  8. android封装全局调用的toast_【Android】Android中WebView实现Java与JS交互

    现在混合式开发是大趋势,H5不断蚕食移动互联网的份额,有的公司甚至只用H5就搞了一个APP,我们搞Android的不说会点H5,至少要懂怎么和H5(和JavaScript)交互,费话不多说. 一.先看 ...

  9. android webview 弹出浏览器,android – 防止WebView打开浏览器

    我已经为给定的WebView启用了JavaScript,并在WebView中打开了新链接,而不是在浏览器中. 这是主要活动 package com.Afrogfx.pronouns; import a ...

最新文章

  1. 查看centos中mysql的日志的命令_CentOS系统中常用查看日志命令
  2. templates的语法
  3. 无锁数据结构三:无锁数据结构的两大问题
  4. 题解【黑匣子_NOI导刊2010提高(06)】(洛谷P1801)
  5. 阿里格林深瞳计算机视觉岗实习面经
  6. AI分析猪叫声中的情绪,“贾维斯”“大白”会不会照进现实?
  7. [csp-201809-4]再卖菜 差分约束or记忆化搜索
  8. 分布式缓存的面试题2
  9. 安徽省c语言程序设计省二题库,C语言程序设计题库二.pdf
  10. 海量数据存储的解决方案(分布式数据库)
  11. matlab-基础 取整函数 向0取整 取最近整数 向上取整 向下取整
  12. 技术经理、架构师、技术总监、VP、CTO,这些岗位都是如何挣出来
  13. epub、ocf等常用电子书格式浅析----附JAVA示例程序
  14. 上传webshell(入侵目标页面主机靶机演示)
  15. Unable to load shared library ‘libgdiplus‘ or one of its dependencies
  16. 编程中的24条经典语录
  17. 【IntelliJ IDEA】UTF-8编码下\u7528\u6237转换为中文汉字,\u9489\u9489\u81EA\u5B9A\u4E49\(Unicode字符与中文的相互转化)
  18. 转:詹姆斯·马奇:领导者容易把自己看成是组织中的英雄
  19. 2022兴福村镇银行人员招聘专项练习题及答案
  20. CAD/CASS断面偏距高程高差批量标注插件(可自动避让、横向或纵向标注)

热门文章

  1. 数字温湿度传感器DHT11
  2. 云麦体脂秤华为体脂秤_如果是一个真正的体脂秤就好了:华为智能体脂秤
  3. 微型计算机常见接口设备,微型计算机的外部设备和内部设备各有哪些?
  4. mysql eav_数据库设计之EAV(实体、属性、值)
  5. ctfshow MengXIn 下(pearcmd.php妙用条件竞争简单密码简单misc)
  6. CUDA 学习(CUDA实战 第四章)
  7. arduino数字端口输出电压可驱动多大继电器呢_单片机实例分享,自制数字示波器...
  8. 微信二维码1-服务号推广(将网页存储为图片存储到服务器)
  9. ppt关闭受保护视图
  10. 交互题 XOR Guessing