我有一个JavaScriptInterface具有单一功能的类.该功能注释,@JavascriptInterface我相信我已正确设置.
public class JavaScriptInterface {
...
@JavascriptInterface
public void processBody(String uri, String body) {
Log.d(TAG, "Process body");
...
}
}
Run Code Online (Sandbox Code Playgroud)
然后我在上面设置JavaScriptEnabled WebView并尝试调用该函数:
final WebView webView = new WebView(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new JavaScriptInterface(), "java");
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
Log.d(TAG, "Page finished");
callJavaScript();
}
});
Run Code Online (Sandbox Code Playgroud)
页面完成加载,然后我尝试了各种方法来调用我的JavaScript函数JavaScriptInterface.使用以下两种方法之一:
view.evaluateJavascript(javascript);
view.loadUrl("javascript:" + javascript);
Run Code Online (Sandbox Code Playgroud)
以及其中一个javascript字符串:
"(function() { window.java.processBody('" + url + "', document.body.innerHTML); })()"
"(function() { processBody('" + url + "', document.body.innerHTML); })()" …Run Code Online (Sandbox Code Playgroud)