Reputation: 969
I want to extract string from WebView, I used
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.
Thanks in advance!
Upvotes: 0
Views: 1327
Reputation: 365
Put your function processContent in MyJavaScriptInterface class like
@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);");
Upvotes: 1
Reputation: 1510
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);
}
}
Upvotes: 2