web-dev-qa-db-ja.com

Phonegap Android Back Button-ホームページの戻るボタンでアプリを閉じる

Jquery Mobile/Phonegapを使用してAndroidアプリを開発しています。電話の戻るボタンを制御する次のコードがあります。

document.addEventListener("backbutton", backKeyDown, true); 


function backKeyDown() { 
    // Call my back key code here.
    $.mobile.changePage("#homepage", "slideup");
}

これはすべて正常に機能しますが、ホームページの戻るボタンのみを押したときにアプリを閉じたいのですが、これは可能ですか?

52
Dancer

更新:これは、(おそらく)最新のPhonegap更新での動作を停止しました。わかっている場合は、実用的なソリューションを提供してください。


以下にその方法を示します。

document.addEventListener("backbutton", function(e){
    if($.mobile.activePage.is('#homepage')){
        /* 
         Event preventDefault/stopPropagation not required as adding backbutton
          listener itself override the default behaviour. Refer below PhoneGap link.
        */
        //e.preventDefault();
        navigator.app.exitApp();
    }
    else {
        navigator.app.backHistory()
    }
}, false);

詳細については、ここに関連するドキュメントと完全な例を見つけることができます。 http://docs.phonegap.com/en/2.0.0/cordova_events_events.md.html#backbutton

121
Spadar Shut
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    document.addEventListener("backbutton", onBackKeyDown, false);
}
function onBackKeyDown() 
{
 navigator.app.exitApp();
}

ありがとう。

12
Thomas V J

ホームページがいつ表示されるかを追跡する必要があります。あなたがホームページ呼び出しにいることを知っているとき:

navigator.app.exitApp();
9
Simon MacDonald

JQuery Mobileを使用したくない場合は、次のコードのように、@ Spadar Shut answerで$.mobile.activePage.is('#homepage')document.getElementById('#homepage')に変更します。

document.addEventListener("deviceready", onDeviceReady, false);

    function onDeviceReady(){
        document.addEventListener("backbutton", function(e){
           if(document.getElementById('#homepage')){
               e.preventDefault();
               navigator.app.exitApp();
           }
           else {
               navigator.app.backHistory()
           }
        }, false);
    }

この方法で、この目的のためだけにJquery Mobileの意味不明なものをダウンロードする必要はありません。 また、activePageはJQuery mobile 1.4.0で非推奨になりました 。1.5.0から削除されます。 ( 代わりにpagecontainerウィジェットのgetActivePage()メソッドを使用

1
shabang