【问题标题】:Phonegap, call from Android to CordovaPhonegap,从 Android 呼叫 Cordova
【发布时间】:2015-08-12 09:05:12
【问题描述】:

我知道这个问题已经被提出了一百万次,但似乎没有一个答案符合我的需要。

我有一个BroadcastReceiver 从其他应用接收数据,所以代码执行总是从 Android 原生代码开始

我看到 webView.sendJavascript 已弃用,但我在 BroadcastReceiver 上没有可用的 Cordova webview

我注意到你会这样做:

webView.loadUrl("javascript:console.log('hello from wear: " + mStopsNumber + "');");

但我还是无法从BroadcastReceiver 访问cordovawebview 对象

我不明白为什么会有这么多问题要求类似的东西,而每个人都回答有关如何构建 Cordova 插件的问题。我知道如何构建我的自定义 Cordova 插件,但据我了解,Cordova 插件是在 codova.exec(whatever 的 JS 代码中启动的,这不是我的场景。

我错过了什么?

【问题讨论】:

    标签: android cordova webview phonegap-plugins


    【解决方案1】:

    使您的BroadcastReceiver 成为CordovaPlugin 的非static 内部类。您现在可以访问 BoradcastReceiver 内的 CordovaPlugin 字段。所以你需要将initialize中传入的CordovaWebView存储在一个字段中才能访问它。


    编辑: 为了使用您的BroadcastReceiver,您必须通过代码注册它,因为Android Manifest 需要您的CordovaPlugin 实例来实例化它,而它不能拥有。

    或者您采用不同的方式,而不是将 BroadcastReceiver 设置为内部类,而是将 CordovaWebView 保存在静态上下文中,以便您可以从任何地方访问它。

    注意:您收到此错误是因为非static 内部类具有隐式构造函数参数:它是父对象。

    【讨论】:

    • 不错!但是当我这样做时,我得到了一个 BroadcastReceiver: can't instantiate class;没有空的构造函数:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多