项目中加载一个地址需要显示网页的Title
Webview有提供的获取方法:
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onReceivedTitle(WebView view, final String title) {
super.onReceivedTitle(view, title);
textTitle = title;
Logger.e("onReceivedTitle = "+title);
}
});
问题:项目中有好多的微信公众号的文章,这些url是获取不到Title的
解决方法:
查看微信公众号文章的网页源码,有个msg_title变量,就是文章的title

这样就可以通过js和android的交互去获取该变量的值。
//设置交互配置
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new JavaInterface(),"androidObject" );
public class JavaInterface{
@JavascriptInterface
public void getTitle(String title){
//获取到标题
}
}
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(android.webkit.WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
view.evaluateJavascript("javascript:window.androidObject.getTitle(msg_title)", new ValueCallback<String>() {
@Override
public void onReceiveValue(String s) {
}
});
}else {
view.loadUrl("javascript:window.androidObject.getTitle(msg_title)");
}
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
}
});
在js中调用java的getTitle方法,方法参数就是js里的标题变量msg_title,这样就可以获取到标题了,这个只是针对微信公众号里的文章,要是获取url文章,就需要进行webview自带获取和微信文章获取方式两种相结合处理。