从Android应用程序转换的blackberry 10应用程序中调用java函数

时间:2013-06-25 10:19:06

标签: java javascript android blackberry interface

这是我的情况:
我已将Android应用程序转换为Blackberry z10应用程序。除了一个外,Everthing效果很好 在我的应用程序中,Java代码与Javascript通信,反之亦然。在Android中它很容易。

myWebView.addJavascriptInterface( new JSCommunicator() , "JSCommunicator" );

和Javascript调用函数一样 JSCommunicator.foo()然而它不适用于z10。有没有什么办法解决这一问题? 谢谢你的帮助,对不好的语言感到抱歉。

2 个答案:

答案 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

添加到JS界面中
 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