700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > android开发(30) 使用WebView 点击网页中的链接建立QQ 临时会话 WPA

android开发(30) 使用WebView 点击网页中的链接建立QQ 临时会话 WPA

时间:2020-04-15 16:00:28

相关推荐

android开发(30)  使用WebView 点击网页中的链接建立QQ 临时会话 WPA

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

使用的链接如下:

<a target="_blank" href="/msgrd?v=3&uin=8888888&site=qq&menu=yes"

>click</a>

其中把8888888 换成你的QQ号。

那么在android里可以这么使用么? 实际上在 默认浏览器 (或者 UC) 里可以做到。而使用自定义的webView时,体验就不那么好了。

我们经常在WebView里 进行 下面的重载setWebViewClient的对象

webView1.setWebViewClient(new WebViewClient() {public boolean shouldOverrideUrlLoading(WebView view, String url) {view.loadUrl(url);return true;}});

如果这样做了,就无法跳转到QQ了。为什么呢?

经捕获发送的请求包,我发现了在的请求中,实际还发送了这么一个请求:mqqwpa://im/chat开头的。

mqqwpa:// 这部分URL的部分,叫做URL的sechme部分,他是http:// ,https://类似,而http:// ,https://是网页,可以打开的。交由webView处理,而其他的则交由默认处理。这样就呢过解决我们的 在URL链接点击后调用QQ。

所以你需要重载shouldInterceptRequest 方法,来截获其他的sechme处理。

像下面这样:

webView1.setWebViewClient(new WebViewClient() {public boolean shouldOverrideUrlLoading(WebView view, String url) {view.loadUrl(url);return true;}@Overridepublic 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;}}});

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。