android设置页面标题,Android开发笔记之如何正确获取WebView的网页Title

如今APP中H5页面使用增多,需正确获取WebView网页标题。常见在WebChromeClient的onReceivedTitle中拿标题,但网页回退时无法拿到正确上一级标题,且缓存标题时机难定。本文采用原生的WebBackForwardList获取标题,并给出相关代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

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

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

2f8d7791cb466035cafc36f965394f5c.png

网上能查的大部分方法都是在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);

}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值