Android WebView 获取页面 Title 的正确姿势

现在 Android 开发中用到 WebView 的地方越来越多,开发中经常会遇到 WebView 的坑,这里先转载二篇很好的文章,WebView 开发时如果遇到了问题可以先去这二篇文章里面看看。

WebView 开车指南 各个知识点讲的很详细,开车必备。
WebView 常见问题及解决方案汇总 如果碰到一些奇怪的问题,先看看这里。

闲话扯完,下面进入正题。
在 APP 中,根据 H5 页面的 Title 来动态显示我们 Toolbar 上的文字,这是一个很正常的需求。接到需求后,直接开撸。

姿势一:

webView.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onReceivedTitle(WebView view, String title) {
                super.onReceivedTitle(view, title);
                if (title != null) {
                  titleView.setCenterText(title);
                }
            }
        });

简单测试了下,发现 titleView 内容是根据页面动态变化了,Nice!
然额,事情这么简单的话也就没必要写这篇博客了,上面的代码在我自己的 7.1 版本的系统上是没有问题的,但是在用低版本手机测试的时候就发现有问题了。

在有些低版本的手机上,首次加载页面的时候是正确获取到了 title,但是当 goback 返回之后发现 title 并没有自动的变回去,还是上一个页面的 title。这可如何是好,在网上找了找,找到了一个解决方案,试了下,发现可行,遂记录下来。

姿势二:

webView.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                String title = view.getTitle();
                if (!TextUtils.isEmpty(title)) {
                  titleView.setCenterText(title);
                }
            }
        });

用上面的方法,在 goback 后都能够正确的拿到 title,所以获取 H5 页面 title 的正确姿势应该是姿势二。

你可能感兴趣的:(Android,开发经验)