【问题标题】:Call java function from javascript from blackberry 10 application converted from an android application从 android 应用程序转换的 blackberry 10 应用程序的 javascript 调用 java 函数
【发布时间】:2013-06-22 02:19:47
【问题描述】:

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

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

并从 Javascript 调用函数,如 JSCommunicator.foo() 但是它不适用于 z10。有没有什么办法解决这一问题? 感谢您的帮助,对于语言不好,我们深表歉意。

【问题讨论】:

    标签: java javascript android blackberry interface


    【解决方案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;
        }
    
    
    }
    );
    

    【讨论】:

      【解决方案2】:

      你在你的 JS 界面中添加了@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

      【讨论】:

      • 我按照你说的添加了注释,但是很抱歉没有解决问题。
      • 发布您的代码。有很多事情要评论......同时检查我几周前做的答案。看看如果你用window.JSCommunicator.foo打电话,在webview设置上启用JS执行setJavaScriptEnabled(true)...stackoverflow.com/questions/16342100/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多