Android开发笔记之如何正确获取WebView的网页Title
前言
现在APP中用到H5页面的越来越多,而如何正确获取WebView的网页title是必须要考虑的。
最近做项目的时候,老大让我把之前做的webview打开网页的功能修改一下,说是要动态的获取网页的标题,然后显示在我们自己app的标题栏上,然后我就屁颠屁颠的跑去看webview的源码,看看有没有获取标题这个方法。
网上能查的大部分方法都是在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); }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
相关文章
Ubuntu中为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序
本文主要介绍在Ubuntu上为Android HAL模块访问Linux内核驱动程序,这里给大家提供方法和一个小的测试程序代码,以及常遇到的问题和解决方法,有需要的小伙伴可以参考下2016-08-08导入takephoto库编译失败与glide库冲突应排除依赖
今天小编就为大家分享一篇关于导入takephoto库编译失败与glide库冲突应排除依赖的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧2018-10-10AndroidStudio构建项目提示错误信息“unable to find valid certification”的
这篇文章主要介绍了AndroidStudio构建项目提示“unable to find valid certification”最新解决方案,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-05-05
最新评论