Android& PhoneGap - 在NPObject上调用错误的方法

时间:2013-01-09 01:56:53

标签: java android cordova

我正在尝试在我的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

任何想法是什么导致了这个/我做错了什么以及如何解决它?如果我在创建活动时设置了标志,它就可以正常工作。

3 个答案:

答案 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