我正在尝试在我的phonegap应用中设置FLAG_SHOW_WHEN_LOCKED
,但仅限于显示某个页面时。为此,我在CordovaPlugin
方法中使用以下代码从execute
扩展了Java插件:
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
任何想法是什么导致了这个/我做错了什么以及如何解决它?如果我在创建活动时设置了标志,它就可以正常工作。
答案 0 :(得分:3)
我已经发现这种错误可能是由需要线程不可用的调用引起的。您对getWindow()
的使用告诉我,这更有可能。您最有可能访问由另一个线程锁定的信息,例如UI线程。查看有关UI线程中线程的部分中的cordova documentation。
答案 1 :(得分:0)
使用:
callbackContext.success();
将显式调用成功回调,但在您的情况下,成功回调为null,这就是您收到错误的原因。
尝试使用:
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK));
exec调用返回的方式,但JS会在尝试调用之前检查是否有成功回调。
答案 2 :(得分:0)
将 android-support-v4.jar 添加到项目构建路径并检查构建路径的订单和导出(选项卡)中的条目是否适合我。 - 谢谢,Prodeveloper