Android開發(fā)(29) 在WebView中點(diǎn)擊超鏈啟動(dòng)QQ

概述

在Web開發(fā)中,我們可以通過(guò)一個(gè)URL鏈接,點(diǎn)擊后啟動(dòng)QQ,這是很好的用戶跳轉(zhuǎn)體驗(yàn),很方便。

使用的鏈接如下:

    <a target="_blank" >click</a>

其中把8888888 換成你的QQ號(hào)。

在android 平臺(tái)的一些 瀏覽器(比如 UC) 里也可以正常被調(diào)用。
而我們Android里我們會(huì)使用Webview展示一些web頁(yè)面,如果頁(yè)面里包含了上面的連接,卻無(wú)法啟動(dòng)qq。該如何做?

思路

在自定義WebView過(guò)程中,我們經(jīng)常在WebView里重載 setWebViewClient方法:

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

這段代碼的意思是,如果Webview里的超鏈被點(diǎn)擊,觸發(fā)了url,就使用Webview去加載,而替代默認(rèn)瀏覽器加載。

我嘗試捕獲發(fā)送的請(qǐng)求包,發(fā)現(xiàn):
http://wpa.qq.com的請(qǐng)求中,實(shí)際還發(fā)送了這么一個(gè)請(qǐng)求:mqqwpa://im/chat開頭的。
mqqwpa:// 這部分URL的部分,叫做URL的sechme部分。
他和 “http://” ,“https:”//類似,而”http://” ,”https://”是普通網(wǎng)頁(yè),可以被打開的。

那么,我們需要捕獲,查看這些url,當(dāng)遇到普通網(wǎng)頁(yè)交給webview處理,當(dāng)遇到 mqqwpa開頭的,交給默認(rèn)瀏覽器處理。
這樣來(lái)解決“在Webview點(diǎn)擊超鏈調(diào)用QQ”的問題

實(shí)現(xiàn)代碼

我們需要重載 shouldInterceptRequest 方法,來(lái)截獲其他的sechme處理。

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;
                }
            }
        });
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 有次面試時(shí),面試官問了一個(gè)如何在WebView點(diǎn)擊超鏈接啟動(dòng)類型QQ類似第三方應(yīng)用,我當(dāng)時(shí)的回答是用WebView...
    洪生鵬閱讀 5,257評(píng)論 19 53
  • 淺談Android中WebView點(diǎn)擊超鏈接啟動(dòng)QQ 在Web開發(fā)中,啟動(dòng)QQ來(lái)臨時(shí)會(huì)話,可以通過(guò)一個(gè)URL鏈接 ...
    飛奔的螞蟻閱讀 832評(píng)論 0 1
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,160評(píng)論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,628評(píng)論 19 139
  • ??瞎忙了那么多天終于可以在新的一周里開始休息了,人一閑著反而會(huì)恐懼,趕上上一周和今天發(fā)生了很多,自己終于可以郁悶...
    jakejiangjn閱讀 408評(píng)論 0 1

友情鏈接更多精彩內(nèi)容