[英]How to extract string from WebView in Android
I want to extract string from WebView, I used 我想从WebView中提取字符串
class MyJavaScriptInterface
{
private Context context;
private TextView textView;
public MyJavaScriptInterface(Context context, TextView textView) {
this.context = context;
this.textView = textView;
}
public void processContent(String aContent){
final String content = aContent;
textView.post(new Runnable(){
@Override
public void run() {
textView.setText(content);
}
});
}
}
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new MyJavaScriptInterface(getActivity(), contentView), "INTERFACE");
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.loadUrl("javascript:window.INTERFACE.processContent(document.getElementsByTagName('body')[0].innerText);");
}
});
webView.loadUrl(url);
but in my processContent there is no String that pass in the textview. 但在我的processContent中,没有在Textview中传递的String。
Thanks in advance! 提前致谢!
may be this will work. 也许这会工作。
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url)
{
/* This call inject JavaScript into the page which just finished loading. */
webView1.loadUrl("javascript:window.HTMLOUT.processHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
}
});
here is the class 这是班
class MyJavaScriptInterface
{
@JavascriptInterface
public void processHTML(String html)
{
//Html extract here
System.out.println("my : " + html);
}
}
Put your function processContent in MyJavaScriptInterface class like 将函数processContent放在MyJavaScriptInterface类中,例如
@JavascriptInterface
public void processContent(String aContent){
final String content = aContent;
textView.post(new Runnable(){
@Override
public void run() {
textView.setText(content);
}
});
}
And change 并改变
view.loadUrl("javascript:window.INTERFACE.processContent(document.getElementsByTagName('body')[0].innerText);");
To 至
view.loadUrl("javascript:activity.processContent(document.getElementsByTagName('body')[0].innerText);");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.