这是我的情况:
我已将Android应用程序转换为Blackberry z10应用程序。除了一个外,Everthing效果很好
在我的应用程序中,Java代码与Javascript通信,反之亦然。在Android中它很容易。
myWebView.addJavascriptInterface( new JSCommunicator() , "JSCommunicator" );
和Javascript调用函数一样
JSCommunicator.foo()
然而它不适用于z10。有没有什么办法解决这一问题?
谢谢你的帮助,对不好的语言感到抱歉。
答案 0 :(得分:1)
好的我找到了解决方案,也许它不是最好的答案,但它解决了问题并在z10模拟器上运行良好。
而不是在android中使用JavaScriptInterface
类处理警报,这样如果你将你的应用程序转换为黑莓应用程序,你也可以处理警报并根据消息做你想做的事。
例如:
alert( 'onFoo' );
在android;
myWebView.setWebChromeClient( new WebChromeClient(){
public boolean onJsAlert( WebView view , String url , String message , android.webkit.JsResult result ){
if(message.compareTo( "onFoo" ) == 0){
foo();
result.confirm();
return true;
}
return false;
}
}
);
答案 1 :(得分:0)
您是否已将@JavascriptInterface
?
public class JSCommunicator {
@JavascriptInterface
public void foo() {
//...
}
}
来自JavascriptInterface methods in WebViews must now be annotated
从Android 4.2开始,您现在必须使用@JavascriptInterface显式注释公共方法,以便从托管JavaScript中访问它们。请注意,这仅在您将应用的minSdkVersion或targetSdkVersion设置为17或更高时才会生效。
添加并导入android.webkit.JavascriptInterface