4

我正在尝试FLAG_SHOW_WHEN_LOCKED在我的 phonegap 应用程序中进行设置,但仅在显示某个页面时。为此,我有一个 Java 插件扩展自方法CordovaPlugin中的以下代码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

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

4

3 回答 3

3

我已经发现这种错误可能是由需要不可用线程的调用引起的。你的使用getWindow()告诉我,这更有可能。您很可能正在访问被另一个线程(如 UI 线程)锁定的信息。查看有关 UI 线程中的线程部分中的 cordova文档。

于 2013-01-29T23:51:47.733 回答
0

使用:

callbackContext.success();

将显式调用成功回调,但在您的情况下,成功回调为空,这就是您收到错误的原因。

尝试使用:

callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK));

这样 exec 调用会返回,但 JS 会在尝试调用它之前检查是否有成功回调。

于 2013-01-09T03:50:43.110 回答
0

android-support-v4.jar添加到项目构建路径并检查它在构建路径的顺序和导出(选项卡)中的条目对我有用。- 谢谢,Prodeveloper

于 2013-11-20T09:47:10.170 回答