Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓&;PhoneGap--在NPObject上调用方法时出错_Java_Android_Cordova - Fatal编程技术网

Java 安卓&;PhoneGap--在NPObject上调用方法时出错

Java 安卓&;PhoneGap--在NPObject上调用方法时出错,java,android,cordova,Java,Android,Cordova,我试图在我的phonegap应用程序中设置锁定时的FLAG\u SHOW\u,但仅当显示某个页面时。为此,我有一个从CordovaPlugin扩展而来的Java插件,在execute方法中有以下代码: if (action.equals("showWhenLocked")) { boolean showWhenLocked = args.getBoolean(0); if (showWhenLocked) { this.cordova.getActivity()

我试图在我的phonegap应用程序中设置锁定时的
FLAG\u SHOW\u,但仅当显示某个页面时。为此,我有一个从
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
知道是什么原因/我做错了什么以及如何修复它吗?如果我在创建活动时设置了该标志,它就可以正常工作。

使用:

callbackContext.success();
将显式调用成功回调,但在您的情况下,成功回调为null,因此会出现错误

尝试使用:

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

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

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

将android-support-v4.jar添加到项目构建路径中,并在构建路径的顺序和导出(选项卡)中检查它的条目对我来说很有用。-谢谢,不幸的是,Prodeveloper没有改变任何东西。此外,我还使用了
callbackContext.success()为另一个插件,我调用没有回调,没有问题。现在,我在这两种情况下都更改了它,但正如前面提到的——没有效果。如果我注释掉
addFlags
调用,我不会得到任何错误。所以我猜那个电话有问题?谢谢。我以前考虑过线程问题,但我认为我没有使用UI线程,所以应该没问题——有点幼稚。我试试看,让你知道。这可能需要几天的时间。事实上,在过去的几天里,我已经在phonegap插件上看到过这条消息好几次了。当您正在使用的函数抛出未捕获的异常时,也会发生这种情况。了解实际情况的最佳方法是将调用放入try、catch和use
Log.d(“TAG”,e.toString())以获取错误报告。在一个案例中,我发现我的try-catch没有被捕获,所以我使用了
Error
而不是
Exception
,并发现了我的问题。我不知道我以前怎么没有想到捕获错误。我也要试试,谢谢。再说一次,这可能需要一段时间,对此我深表歉意。我肯定会回到这里,并(如果成功的话)接受答案等。我现在尝试捕捉错误,它是一个调用FromErrorThreadException(“只有创建视图层次结构的原始线程才能接触其视图”)。在UI线程上运行它不会再抛出这个错误,但是我仍然需要检查它是否真的在很快的某个时候工作。伙计们,我保证我不会忘记——我终于有时间完成了。在UI线程上运行它最终成功了。谢谢