如果打開一個未知的連接配接,擷取WebView目前頁面的标題,可能通過對WebChromeClient.onReceivedTitle()方法的重寫來實作:
public class MyWebClient extends WebChromeClient {
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
if(view.canGoBack())
{
setTitle(view.getTitle());
}else{
if (StringUtil.valid(CommonWebActivity.this.title)){
setTitle(CommonWebActivity.this.title);
}else {
setTitle(view.getTitle());
}
}
}
}
mWebView.setWebChromeClient(new MyWebClient());
首先,判斷canGoBack,是判斷目前頁面是否是浏覽器裡面加載的第一個頁面,如果是那麼就是false,而二級跳轉頁面則會是true。這樣我們可以為第一個頁面指定标題,如果為空的話,用webview自身擷取到的标題即view.getTitle()。二級頁面會使用自身擷取到的标題。
但是對于有些手機從二級頁面回來的時候會把二級頁面的标題覆寫第一個h5頁面标題,那麼解決這個問題的辦法如下:
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
setTitle(view.getTitle());
}
});
重寫WebViewClient類裡面的 onPageFinished方法,然後setTitle(view.getTitle())就好了。