美文网首页Android开发经验谈Android开发
[Android开发笔记]正确获取WebView的网页Title

[Android开发笔记]正确获取WebView的网页Title

作者: goweii | 来源:发表于2018-09-22 15:33 被阅读47次

    现在APP中用到H5页面的越来越多,而如何正确获取WebView的网页title是必须要考虑的。

    网上能查的大部分方法都是在WebChromeClient的onReceivedTitle(WebView view, String title)中拿到title。但是这个方法在网页回退时是无法拿到正确的上一级标题的,网上的处理方法是自己维护一个List去缓存标题,在执行完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);
    }
    

    相关文章

      网友评论

      • 双鱼大猫:很多时候获取到的tittle名字太长,怎么处理呢?
        goweii:@双鱼大猫 你可以参考一下浏览器的处理方式,一般为单行末尾省略号,或者单行水平滚动。具体怎么处理还是看需求的

      本文标题:[Android开发笔记]正确获取WebView的网页Title

      本文链接:https://www.haomeiwen.com/subject/ytkxoftx.html