Android开发笔记之如何正确获取WebView的网页Title

作者:goweii 时间:2022-06-04 07:02:41 

前言

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

最近做项目的时候,老大让我把之前做的webview打开网页的功能修改一下,说是要动态的获取网页的标题,然后显示在我们自己app的标题栏上,然后我就屁颠屁颠的跑去看webview的源码,看看有没有获取标题这个方法。

Android开发笔记之如何正确获取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);
}

来源:https://www.jianshu.com/p/cba7f3faa67c

标签:android,webview,title
0
投稿

猜你喜欢

  • 利用Springboot+Caffeine实现本地缓存实例代码

    2022-05-31 09:13:33
  • 如何用Spring发送电子邮件

    2023-12-05 07:34:14
  • SpringMVC RESTFul及REST架构风格介绍

    2021-09-30 05:05:33
  • C#判断获取的是文件夹还是文件的实例

    2022-11-25 05:00:01
  • 有关微博content的封装实现详解

    2022-12-02 17:37:53
  • 利用kotlin实现一个打方块的小游戏实例教程

    2023-01-30 04:21:25
  • C#使用windows服务开启应用程序的方法

    2022-08-14 04:37:14
  • Android中TextView动态设置缩进距离的方法

    2023-08-07 09:52:00
  • Kotlin协程的线程调度示例详解

    2023-12-26 20:19:56
  • java开发之内部类的用法

    2023-02-04 21:30:07
  • 详解Java token主流框架之JWT

    2022-03-30 19:30:34
  • Android MVP模式实战教程

    2023-09-05 13:16:54
  • IDEA 2020.3.X 创建scala环境的详细教程

    2022-07-16 11:44:47
  • Java中关键字synchronized的使用方法详解

    2022-04-14 06:18:54
  • Unity延时执行的多种方法小结

    2022-03-16 10:49:32
  • Springboot JPA 枚举Enum类型存入到数据库的操作

    2023-11-25 16:11:40
  • SpringBoot整合Shiro的方法详解

    2022-04-13 15:05:56
  • JavaWeb 网上书店 注册和登陆功能案例详解

    2022-09-20 02:53:22
  • Android仿支付宝微信支付密码界面弹窗封装dialog

    2021-10-24 13:13:31
  • 用intellij Idea加载eclipse的maven项目全流程(图文)

    2021-09-12 06:11:16
  • asp之家 软件编程 m.aspxhome.com