Android WebView 捕捉點擊的URL中的信息


項目要求,在WebView中點擊搜索關鍵字,加載其他Web頁面時,需要在一個文本輸入框中,實時顯示關鍵字

事實上,這種點擊,是WebView內的,並沒有跳出這個WebView,Activity也沒有經歷任何生命周期。看似無法捕捉

事實上很簡單,通過重寫shouldOverrideUrlLoading(),可以獲取各種點擊事件對應的URL。解析其參數列表,看其中有沒有

keys關鍵字,獲取其value,解析、顯示就可以了

 

 

shouldOverrideUrlLoading() 方法
返回true 表明點擊網頁里面的鏈接還是在當前的webview里跳轉,
返回false 跳到其他瀏覽器

 

 


其中,獲取URL中的參數Map的類URLUtil.java,見另一篇博文: URL網址參數解析類

 

 

private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {     
            if(url.startsWith("intent://")){
                return true;
            }
            super.shouldOverrideUrlLoading(view, url);
            if (TextUtils.isEmpty(url))
                return true;

            //以下內容  用於:頁面中點擊其他關鍵字搜索時,在最上端的EditText中添加hint
            DebugUtil.d("myc", "url = " + url);
Map
<String, String> mapRequest = URLUtil.getRequestParamMap(url); if(mapRequest!=null && mapRequest.size()!=0) { String keyWord = mapRequest.get("keys");  //獲取關鍵字字段 DebugUtil.d("myc", "keyWord = " + keyWord); if (!TextUtils.isEmpty(keyWord)) { try { String result = URLDecoder.decode(keyWord, "UTF-8"); //用Android自帶的URLDecoder解析成中文 setKeyword(result); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } return true; } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { super.onReceivedError(view, errorCode, description, failingUrl); } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM