Android和PhoneGap – NPObject上的错误调用方法
我正在尝试在我的phonegap应用中设置FLAG_SHOW_WHEN_LOCKED
,但仅限于显示某个页面时。 为此,我有一个从CordovaPlugin
扩展的Java插件,在execute
方法中包含以下代码:
if (action.equals("showWhenLocked")) { boolean showWhenLocked = args.getBoolean(0); if (showWhenLocked) { this.cordova.getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); } else { this.cordova.getActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); } callbackContext.success(); return true; }
它被cordova.exec(null, null, 'MyPluginClass', 'showWhenLocked', [myVar])
,但在执行时我得到错误
Uncaught Error: Error calling method on NPObject. at file:///android_asset/www/cordova-2.2.0.js:984
是什么导致了这个/我做错了什么以及如何解决它? 如果我在创建活动时设置了标志,它就可以正常工作。
我已经发现这种错误可能是由需要线程不可用的调用引起的。 你使用getWindow()
告诉我这更有可能。 您最有可能访问由另一个线程锁定的信息,例如UI线程。 查看有关UI线程中线程的部分中的cordova 文档 。
使用:
callbackContext.success();
将显式调用成功回调,但在您的情况下,成功回调为null,这就是您收到错误的原因。
尝试使用:
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK));
这样exec调用返回但是JS会在尝试调用它之前检查是否有成功回调。
将android-support-v4.jar添加到项目构建路径并在Build路径的Order and Export(选项卡)中检查它的条目对我有用 。 – 谢谢,开发者