国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

webview獲取網頁title

2019-11-09 19:00:51
字體:
來源:轉載
供稿:網友

序言

今天做項目的時候,老大讓我把之前做的webview打開網頁的功能修改一下,說是要動態的獲取網頁的標題,然后顯示在我們自己app的標題欄上,然后我就屁顛屁顛的跑去看webview的源碼,看看有沒有獲取標題這個方法。

需求:這個是我在Activity中放的一個webview,上面一個title,然后當我點擊網頁中的鏈接的時候,我希望頁面的title也會跟著改變,當我返回的時候,我也希望title變回當前網頁的title

一、首先,webview的加載在這里我們就不多說了,往上有很多這樣的例子,如果還不清楚的,請看Webview合集 - 簡書

二、然后我們需要獲取網頁的title

1、在webview中有一個組件,叫做WebChromeClient,這個組件是用來協助Webview處理Js的一些東西的,比如說網站的圖標,網站的title,網站的加載進度等等,所以我們可以用這個來獲取title。實現它里面的onReceivedTitle這個方法即可:

WebChromeClient wcc = new WebChromeClient() { @Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); tvTitle.setText(title); }};

獲取這個title就可以了,可能有人要說了,你都沒有跟你訪問的url關聯起來,它怎么就能獲取title了,難不成他還能上天不成,別急嘛!咱后面還有呢!

2、在webview中還有另外一個組件,叫做WebViewClient,這個組件主要用來輔助webview處理一些簡單的html頁面內容,比如各種通知,請求事件等等,也就是說在用這個組件你可以監聽網頁加載是否完成,是否開始等等,然后還有就是可以設置是否在外部瀏覽器中瀏覽:

mWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return false; }});

在執行完這個組件之后我們再來綁定我們的url:

mWebView.loadUrl(url);

好了,現在就可以實時的更換你的title了,但是這里還有一個bug,當然了,這不是我的bug,是WebChromeClient的bug,按返回鍵的時候,是不會執行onReceivedTitle這個方法的,所以返回的時候title就不會動態的改變了,后來百度到有方法可以讓他動態的改變,那就是自己維護,何為自己維護呢:

就是自己創建一個棧,也就是list,來動態添加,刪除你瀏覽的網頁

好了,方法有了,咱們來實踐一下

PRivate List<String> loadHistoryUrls=new ArrayList<>();

然后我們在剛才WebViewClient那里增加一個方法,onPageFinished,因為每次打開新的網頁,完成之后都會執行這個方法:

@Overridepublic void onPageFinished(WebView view, String url) { loadHistoryUrls.add(url);}

那我們在哪里刪除呢?當然是返回的地方啊:

/** * 改變返回鍵的功能,當網頁中有需要返回的界面時,網頁中優先 * * @param keyCode * @param event * @return */@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if (mWebView.canGoBack()) { if (loadHistoryUrls.size() > 1) { //重新加載之前的頁面,這里為了讓標題也能正常顯示 String url = loadHistoryUrls.get(loadHistoryUrls.size() - 2); loadHistoryUrls.remove(loadHistoryUrls.size() - 1); if (loadHistoryUrls.size() > 0) { loadHistoryUrls.remove(loadHistoryUrls.size() - 1); } mWebView.loadUrl(url); return true; } } } return super.onKeyDown(keyCode, event);}

好了,到這里我們就維護好了標題實時改動了,我們來看看效果吧!

這是我建的一個android小白的群,各位有興趣的小白歡迎加群共同學習,也歡迎各位大神進群指導,共勉。群號:541144061


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 连州市| 西贡区| 新安县| 虹口区| 尼勒克县| 潼南县| 饶河县| 庄河市| 锦屏县| 桐柏县| 石嘴山市| 习水县| 晋宁县| 隆昌县| 炉霍县| 新野县| 昌吉市| 桂东县| 平遥县| 绥阳县| 墨脱县| 呼和浩特市| 阳曲县| 聊城市| 长沙县| 宣化县| 新平| 沭阳县| 武夷山市| 麟游县| 安徽省| 靖州| 辉县市| 江都市| 凤庆县| 怀柔区| 抚顺县| 博客| 昌吉市| 黑水县| 嘉祥县|