我知道这个问题在这里已经被问过无数次了,但是似乎没有一个答案符合我的需求。
我有一个BroadcastReceiver
从其他应用程序接收数据,所以代码执行总是在Android本地代码开始。
我看到webView.sendJavascript
被弃用了,但是我没有Cordova webview
在BroadcastReceiver
上可用。
我注意到你会这样做:
webView.loadUrl("javascript:console.log('hello from wear: " + mStopsNumber + "');");
但是我不能从BroadcastReceiver
访问cordova
, webview
对象
我不明白为什么有这么多的问题,要求类似的东西,每个人都回答关于如何建立一个Cordova插件。我知道如何构建我的自定义Cordova插件,但据我所知,Cordova插件是在JS代码与codova.exec(whatever
启动,这不是我的场景。
我错过了什么?
将BroadcastReceiver
设置为CordovaPlugin
的非static
内部类。现在可以在BoradcastReceiver
中访问CordovaPlugin
的字段。因此,您需要将initialize
传递的CordovaWebView
存储在一个字段中,以便访问它。
编辑:为了使用你的BroadcastReceiver
,你要么必须通过代码注册它,因为Android Manifest将需要你的CordovaPlugin
的实例来实例化它,它不能有。
或者你走另一种方式,而不是让你的BroadcastReceiver
一个内部类,你保存CordovaWebView
在一个静态上下文中,所以你可以从任何地方访问它。
注意:你得到这个错误是因为一个非static
内部类有一个隐式的构造函数参数:它的父对象。