WebUtil.syncCookie(viewModel.webUrl.get(), SharedPreferencesUtils.getProperty(this, "cookice"));
final WebSettings webSettings = binding.webView.getSettings();
// 设置与Js交互的权限
webSettings.setJavaScriptEnabled(true);
binding.webView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
return super.onConsoleMessage(consoleMessage);
}
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
if (newProgress == 100) {
binding.progressBar.setVisibility(View.INVISIBLE);//加载完网页进度条消失
} else {
binding.progressBar.setVisibility(View.VISIBLE);//开始加载网页时显示进度条
binding.progressBar.setProgress(newProgress);//设置进度值
}
}
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
//获取网页标题一定要在这里获取,才能预先加载
if (news.equals("1")) {
viewModel.title.set("资讯");
} else {
viewModel.title.set(view.getTitle());
}
}
});
// 绑定webview,支持h5埋点的关键步骤
// 如需支持h5统计,需要将 assets/mobstat.js 拷贝到工程目录下
//StatService.bindJSInterface(this, binding.webView);
binding.webView.addJavascriptInterface(new NewsInfoActivity.RemoteService(this), interfaceName);//AndroidtoJS类对象映射到js的test对象
binding.webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
/* 不要在这里获取加载,这里是页面加载完成后才会显示标题
if (news.equals("1")) {
viewModel.title.set("资讯");
} else {
viewModel.title.set(view.getTitle());
}*/
viewModel.webUrl.set(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
viewModel.title.set(view.getTitle());
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
binding.webView.setVisibility(View.GONE);
}
@Override
public void onPageStarted(WebView view, final String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
new Thread(new Runnable() {
@Override
public void run() {
try {
Document doc = Jsoup.connect(url).get();
viewModel.shareTitle.set(doc.getElementsByClass("new_title_line").text());
viewModel.shareImg.set(doc.getElementsByClass("newsPreviewImg").text());
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
});
}
网友评论