我想知道是否单击了打印按钮。我在 android WebView 中打开网页如果单击打印按钮,我想获取当前页面的 HTML 源
在这里我正在设置 WebView 和 onPageFinish 正在加载...我正在从 odoo 服务器加载数据
web_view = (WebView) findViewById(R.id.web_view);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
//web_view.setWebViewClient(new WebViewClient());
web_view.getSettings().setJavaScriptEnabled(true);
web_view.getSettings().setLoadWithOverviewMode(true);
web_view.getSettings().setUseWideViewPort(true);
web_view.getSettings().setDomStorageEnabled(true);
web_view.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
web_view.getSettings().setBlockNetworkImage(false);
web_view.setWebChromeClient(new WebChromeClient());
web_view.addJavascriptInterface(new MyJavaScriptInterface(this), "ok");
web_view.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
progressBar.setVisibility(View.VISIBLE);
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, final String url) {
progressBar.setVisibility(View.GONE);
if(view.getTitle().equalsIgnoreCase("POS"))
{
web_view.loadUrl("javascript:window.ok.print();");
web_view.loadUrl("javascript:document.getElementsByClassName('o_main_content')[0].innerHTML+'</html>');");
web_view.loadUrl("javascript:document.ok.order_printbill=('order-printbill'));");
web_view.loadUrl("javascript:window.ok.showHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");
web_view.evaluateJavascript(
"(function() { return ('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>'); })();",
new ValueCallback<String>() {
@Override
public void onReceiveValue(String html) {
JsonReader reader = new JsonReader(new StringReader(html));
Log.d("HTML", "the html or " + html);
reader.setLenient(true);
try {
if(reader.peek() != JsonToken.NULL) {
if(reader.peek() == JsonToken.STRING) {
String msg = reader.nextString();
if(msg != null) {
}
}
}
} catch (IOException e) {
Log.e("TAG", "MainActivity: IOException", e);
} finally {
try {
reader.close();
} catch (IOException e) {
// NOOP
}
}
}
});
}
}
public void loadEvent(String javascript){
web_view.loadUrl("javascript:"+javascript);
}
public String clickListener(){
return getButtons()+ "for(var i = 0; i < buttons.length; i++){ buttons[i].onclick = function(){ console.log('click worked.'); ButtonRecognizer.boundMethod('button clicked'); };}";
}
private String getButtons(){
return "var buttons = document.getElementsByClassName('control-button'); console.log(buttons.length + ' buttons'); ";
}
});
web_view.loadUrl("webPageUrl");
这是我的 JavaScriptInterface 类
class MyJavaScriptInterface {
private Context ctx;
MyJavaScriptInterface(Context ctx) {
this.ctx = ctx;
}
@JavascriptInterface
public void print() throws Exception
{
Log.d("LOGIN::", "Clicked");
Toast.makeText(WebViewActivity.this, "Login clicked", Toast.LENGTH_LONG).show();
}
@JavascriptInterface // For API 17+
public void order_printbill(String strl)
{
Log.e("TAG", "the click ssdf " + strl);
}
@JavascriptInterface
public void showHTML(String html) {
Log.d("TAg", " the html source is " + html);
}
}
如果单击打印按钮以及单击后如何获取。在单击打印按钮时,我想获取页面的 html 源