2012-04-30 10 views
4

私はHTML5 Webアプリケーションを開発し、Cordova(phonegap)1.7でコンパイルしています。戻るボタンを押したときにAndroidがWebアプリケーションを閉じるのを防ぐにはどうすればよいですか?

私はアプリケーション(デフォルトのAndroid)を閉じる代わりにwindow.history.back()を呼び出すことができるようにAndroidのバックボタンをオーバーライドします。戻るボタンを押したときにAndroidがデフォルト動作を停止させないようにするにはどうすればよいですか?

「戻るボタンが押されました!!!!」 logcatでは、アプリケーションが終了する前にメソッドが起動されます。

これは私がこれまで持っているものです。

 // Wait for Cordova to load 
     // 
     document.addEventListener("deviceready", onDeviceReady, false); 

     // Cordova is ready 
     // 
     function onDeviceReady() { 

      document.addEventListener("backbutton", function(e) { 

       console.log("Back button pressed!!!!");     
       window.history.back(); 


      }, false); 

     } 

は編集:私は(window.history.backをシミュレートする方法を説明する答えを受け入れて喜んで)直接DefaultActivity.javaアンドロイドクラスからならばそれは可能です!

+0

そのコードは機能するはずです。まだリリースされていないので、どこでPGの1.7バージョンを入手しましたか?あなたはギブスを嫌っていますか? –

+0

@SimonMacDonald 1.7rc1が先週の木曜日のdownload.phonegap.comでリリースされました。 http://phonegap.com/2012/04/26/1-7-0rc1-released/ –

+0

コードは悲しいことに機能しません:/ – Sindre

答えて

6

私はデフォルトアンドロイド動作を防ぐためにDefaultActivity.javaファイルには、以下のコードを追加し、質問に記載されているようにJavaScriptコードを保つことによって自分の質問を解決:

@Override 
public void onBackPressed() { 
    return; 
} 

私は、これはの誰かに役立ちます願っています同じ問題の未来!

+0

私はphonegap 1.7を使用していますが、これは動作する唯一のアプローチであるようです。しかし、私はそれがphonegapビルドのようなもので動作するように、非ネイティブのソリューションを好むだろう。大いに感謝します。 – kctang

+0

私も同じコードを試しました...しかし、今はそれもアプリケーションを閉じることも戻って戻って....戻るボタンが無効に....あなたは私が最後の訪問ページに戻ることができるようにこれを修正するように提案することができます –

0

決してそれをしなければなりませんでしたが、return trueを試しましたか?

Java SDKの場合と同様に、Trueを返すと、システムは正しくイベントをキャッチしたとみなし、他のイベントリスナーに渡さなくなります。

+0

ええ、私は試しました。しかし、それは悲しいかなかうまくいきませんでした。私はコンソールにも印刷して、back()はしませんが、まだ終了します。奇妙な! – Sindre

2

私はこのアプローチを採用しました。あなたが示したように、私はバックボタンイベントをフックしました。私はこれが最初のページであるかどうかを調べ、ユーザーがプログラムを終了するかどうかを尋ねます。これは、あなたのプログラムがその状態に応じて何をしたいかによって異なります。あなたが示したように私は上書きを追加しませんでした。私はそれを必要としなかった。

if ($.mobile.activePage.attr('id') === 'firstpage') { 
    // Prompt to confirm the exit 
} else { 
    window.history.back(); 
} 

彼らはあなたが呼び出すことができます終了する場合:

navigator.app.exitApp(); 

をあなたのプログラムを閉じます。

ユーザーがあなたのアプリを終了できるようにしたいと思っています。私は のような何かの出口を許可しないアプリを使用する傾向はありません。

これがあなたを助けてくれることを願っています。

関連する問題