我正在尝试调用一些javascript
函数,这些函数位于.NET中html
运行的页面中android webview
。代码尝试在下面执行的操作非常简单-从android应用程序中,调用javascript
带有测试消息的函数,然后依次在android应用程序中调用java函数,该函数通过烤面包显示测试消息。
该javascript
函数如下所示:
function testEcho(message){
window.JSInterface.doEchoTest(message);
}
从WebView,我尝试javascript
了以下几种方法,但是没有运气:
myWebView.loadUrl("javascript:testEcho(Hello World!)");
mWebView.loadUrl("javascript:(function () { " + "testEcho(Hello World!);" + "})()");
我确实启用javascript
了WebView
myWebView.getSettings().setJavaScriptEnabled(true);
// register class containing methods to be exposed to JavaScript
myWebView.addJavascriptInterface(myJSInterface, "JSInterface");
这是Java
阶级
public class JSInterface{
private WebView mAppView;
public JSInterface (WebView appView) {
this.mAppView = appView;
}
public void doEchoTest(String echo){
Toast toast = Toast.makeText(mAppView.getContext(), echo, Toast.LENGTH_SHORT);
toast.show();
}
}
我花了很多时间在谷歌上搜索,看看自己可能做错了什么。我发现的所有示例都使用这种方法。有人在这里看到问题吗?
编辑:中 还有其他一些外部javascript
文件被引用和使用,这html
可能是问题吗?
@JavascriptInterface
,您需要在要通过JavaScript接口提供给WebView的Java方法上使用装饰器。
myWebView.loadUrl("javascript:testEcho('Hello World!')");
我了解到您已经将html文件附加到了该webview。你能告诉我你是怎么做到的吗?