4

FLAG_SHOW_WHEN_LOCKEDphonegapアプリで設定しようとしていますが、特定のページが表示されている場合のみです。そのために、メソッド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

これを引き起こしているもの/私が間違っていることとそれを修正する方法についてのアイデアはありますか?アクティビティの作成時にフラグを設定すると、問題なく機能します。

4

3 に答える 3

3

この種のエラーは、使用できないスレッドを必要とする呼び出しによって引き起こされる可能性があることをすでに知っています。あなたの使用はgetWindow()、これがさらに可能性が高いことを教えてください。UIスレッドなど、別のスレッドによってロックされている情報にアクセスしている可能性があります。UIスレッドでのスレッド化に関するセクションのcordovaのドキュメントを確認してください。

于 2013-01-29T23:51:47.733 に答える
0

使用:

callbackContext.success();

は明示的に成功コールバックを呼び出しますが、あなたの場合、成功コールバックはnullであるため、エラーが発生します。

使用してみてください:

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 に答える