[Android開發(fā)筆記]正確獲取WebView的網頁Title

現在APP中用到H5頁面的越來越多,而如何正確獲取WebView的網頁title是必須要考慮的。

網上能查的大部分方法都是在WebChromeClient的onReceivedTitle(WebView view, String title)中拿到title。但是這個方法在網頁回退時是無法拿到正確的上一級標題的,網上的處理方法是自己維護一個List去緩存標題,在執(zhí)行完webView.goBack()后,移除List的最后一條,再將新的最后一條設置給標題欄。

這個方法當然是可行的,但是自己緩存時緩存時機和移除時機都不好確定,onReceivedTitle方法在一個頁面打開時并不是僅調用一次,而是多次調用,前面拿到的title都為空。

這里采用原生的WebBackForwardList獲取,詳見代碼。

webView.setWebChromeClient(new WebChromeClient() {
    @Override
    public void onReceivedTitle(WebView view, String title) {
        getWebTitle();
    }
});

private void getWebTitle(){
    WebBackForwardList forwardList = webView.copyBackForwardList();
    WebHistoryItem item = forwardList.getCurrentItem();
    if (item != null) {
        setActionBarTitle(item.getTitle());
    }
}

private void onWebViewGoBack(){
    webView.goBack();
    getWebTitle();
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (webView.canGoBack()) {
        onWebViewGoBack();
        return false;
    }
    return super.onKeyDown(keyCode, event);
}
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容