

Androidのハードウェアキーであるバックキーが押されたら、ダイアログを表示しアプリを終了させたいのですが、以下のコードでやっても正常に動作しません。

[code]

    document.addEventListener("backbutton", onBackPressed, false);
    
      function onBackPressed()
      {
        confirmExit();
      }
    
      function confirmCallback(id)
      {
        if(1 == id)
        {
          navigator.app.exitApp();
        }
      }
      function confirmExit()
      {
        navigator.notification.confirm("アプリケーションを終了しますか？", confirmCallback, "終了メニュー", "終了,キャンセル")
      }
    
[/code]

アプリケーションを終了しますか？というダイアログは確かに出るのですが、終了を選択する前にアプリが終わってしまいます。  
再度アプリを起動させると必要なjsファイルなどが読み込まれていない状態です。  
※AngularJSで動作せてていますが、変数が変わらない為そう判断しています

[code]

    document.addEventListener(
        "deviceready",
        function()
        {
          document.addEventListener("backbutton", onBackPressed, false);
        }
        ,false
      );
    
[/code]

上記のようなソースではそもそもダイアログも表示されません。

notification、exitappなどのプラグインはインストールしています

何か解決策ありましたら、お願いします。


CC BY-SA 3.0
2016-01-21T02:29:35.080
21143
2016-03-26T02:37:51.473
13904
question
android monaca
Androidのバックキーからの制御


こんな感じでbackKeyの動作を無効化すればよいのではないでしょうか。

[code]

      @Override
      public boolean dispatchKeyEvent(KeyEvent e) {
        // バックボタンが押されたときの処理
        if(e.getKeyCode() == KeyEvent.KEYCODE_BACK && e.getAction() == KeyEvent.ACTION_DOWN) {
          Log.d("dispatchKeyEvent", "バックボタン押された");
    
          // trueを返すことでbackKeyの動作を無効化
          return true;
        }
    
        // バックボタンじゃなかったら通常の動作をする
        return super.dispatchKeyEvent(e);
      }
    
[/code]


CC BY-SA 3.0
2016-02-25T02:30:08.950
22502
2016-02-25T02:30:08.950
14540
21143
answer