前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android开发(29) 在WebView中点击超链启动QQ

Android开发(29) 在WebView中点击超链启动QQ

作者头像
张云飞Vir
发布2020-03-16 15:18:42
1.1K0
发布2020-03-16 15:18:42
举报
文章被收录于专栏:写代码和思考

概述

在Web开发中,我们可以通过一个URL链接,点击后启动QQ,这是很好的用户跳转体验,很方便。

使用的链接如下:

代码语言:javascript
复制
    <a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin=8888888&site=qq&menu=yes">click</a>

其中把8888888 换成你的QQ号。

在android 平台的一些 浏览器(比如 UC) 里也可以正常被调用。 而我们Android里我们会使用Webview展示一些web页面,如果页面里包含了上面的连接,却无法启动qq。该如何做?

思路

在自定义WebView过程中,我们经常在WebView里重载 setWebViewClient方法:

代码语言:javascript
复制
    webView1.setWebViewClient(new WebViewClient() {
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    });

这段代码的意思是,如果Webview里的超链被点击,触发了url,就使用Webview去加载,而替代默认浏览器加载。

我尝试捕获发送的请求包,发现: 在http://wpa.qq.com的请求中,实际还发送了这么一个请求:mqqwpa://im/chat开头的。 mqqwpa:// 这部分URL的部分,叫做URL的sechme部分。 他和 “http://” ,“https:”//类似,而”http://” ,”https://”是普通网页,可以被打开的。

那么,我们需要捕获,查看这些url,当遇到普通网页交给webview处理,当遇到 mqqwpa开头的,交给默认浏览器处理。 这样来解决“在Webview点击超链调用QQ”的问题

实现代码

我们需要重载 shouldInterceptRequest 方法,来截获其他的sechme处理。

代码语言:javascript
复制
webView1.setWebViewClient(new WebViewClient() {
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }

            @Override
            public WebResourceResponse shouldInterceptRequest(WebView view,
                    String url) {
                if (url.startsWith("http") || url.startsWith("https")) {
                    return super.shouldInterceptRequest(view, url);
                } else {
                    Intent in = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                    startActivity(in);
                    return null;
                }
            }
        });
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 思路
  • 实现代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档