1

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

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

并且来自 Javascript 调用函数, JSCommunicator.foo()但是它不适用于 z10。有没有什么办法解决这一问题?感谢您的帮助,并为糟糕的语言感到抱歉。

4

2 回答 2

1

好的,我找到了解决方案,也许它不是最好的答案,但它解决了问题并且在 z10 模拟器上运行良好。

而不是在android中使用JavaScriptInterface类句柄警报,通过这种方式,如果您将您的应用程序转换为黑莓应用程序,您还可以处理警报并根据消息执行您想要的任何操作。

前任:

 alert( 'onFoo' );

在安卓中;

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;
    }


}
);
于 2013-06-26T06:36:18.730 回答
0

您是否在 JS 界面中添加了@JavascriptInterface?

 public class JSCommunicator {
     @JavascriptInterface
     public void foo() {
     //...
     }
 }

现在必须从WebViews 中的 JavascriptInterface 方法进行注释

从 Android 4.2 开始,您现在必须使用 @JavascriptInterface 显式注释公共方法,以使它们可以从托管的 JavaScript 访问。请注意,这也仅在您将应用的 minSdkVersion 或 targetSdkVersion 设置为 17 或更高时才会生效。

添加并导入android.webkit.JavascriptInterface

于 2013-06-25T10:27:14.453 回答