android開發(30) 使用WebView,點擊網頁中的連接創建QQ 臨時會話 WPA

在PC端,咱們能夠經過一個URL連接,點擊後啓動QQ,這是很好的用戶跳轉體驗。很方便。android

使用的連接以下:web

<a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin=8888888&site=qq&menu=yes"
>click</a>瀏覽器

其中把8888888 換成你的QQ號。ide

 

那麼在android裏能夠這麼使用麼? 實際上在 默認瀏覽器 (或者 UC) 裏能夠作到。而使用自定義的webView時,體驗就不那麼好了。ui

咱們常常在WebView裏 進行 下面的重載 setWebViewClient的對象url

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

  若是這樣作了,就沒法跳轉到QQ了。爲何呢?spa

經捕獲發送的請求包,我發現了在http://wpa.qq.com的請求中,實際還發送了這麼一個請求:mqqwpa://im/chat開頭的。code

mqqwpa:// 這部分URL的部分,叫作URL的sechme部分,他是http:// ,https://相似,而http:// ,https://是網頁,能夠打開的。交由webView處理,而其餘的則交由默認處理。這樣就呢過解決咱們的 在URL連接點擊後調用QQ。對象

因此你須要重載 shouldInterceptRequest 方法,來截獲其餘的sechme處理。blog

 

像下面這樣:

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;
                }
            }
        });
相關文章
相關標籤/搜索