Cordova for androidはAppでbuttonイベントを終了する方法を処理します
3261 ワード
プロジェクトはHTML 5 Android Appに返却キーの処理を追加する必要があり、Activityに直接返却キーを付ける処理コードが機能しないことを発見した.cordovaソースコードを分析すると、返却キーはWebViewで処理されていることが分かったので、jsで返却キーを処理できるだけだ.
以下のコードは、後退buttonに応答し、ユーザーに再度クリックして終了するように促すことができます.3秒後にクリックしなかったと仮定すると登録イベントが再開される.注意:window.plugins.ToastPlugin.show_short()はtoastメッセージを表示するプラグインです!コード:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (exit > 1) {
finish();
} else {
Toast.makeText(this, R.string.toast_exit, Toast.LENGTH_SHORT)
.show();
exit++;
}
return true;
} else {
return super.onKeyDown(keyCode, event);
}
}
CordovaActivityを継承したActivityでは、上記のコードは機能しません.WebViewは戻りキーイベントを処理し、Activityを終了しているためです. /*
* Android 2.x needs to be able to check where the cursor is. Android 4.x does not
*
* (non-Javadoc)
* @see android.app.Activity#onKeyDown(int, android.view.KeyEvent)
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
//Determine if the focus is on the current view or not
if (appView != null && appView.getFocusedChild() != null && (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_MENU)) {
return appView.onKeyDown(keyCode, event);
}
else
return super.onKeyDown(keyCode, event);
}
CordovaActivityソースコードの戻りキー処理コード以下のコードは、後退buttonに応答し、ユーザーに再度クリックして終了するように促すことができます.3秒後にクリックしなかったと仮定すると登録イベントが再開される.注意:window.plugins.ToastPlugin.show_short()はtoastメッセージを表示するプラグインです!コード:
// PhoneGap
document.addEventListener("deviceready", onDeviceReady, false);
// PhoneGap
function onDeviceReady() {
//
document.addEventListener("backbutton", eventBackButton, false); //
document.addEventListener("menubutton", eventMenuButton, false); //
document.addEventListener("searchbutton", eventSearchButton, false); //
}
//
function eventBackButton(){
//confirm(" !");
window.plugins.ToastPlugin.show_short(' !');
document.removeEventListener("backbutton", eventBackButton, false); //
//3
var intervalID = window.setInterval(
function() {
window.clearInterval(intervalID);
document.addEventListener("backbutton", eventBackButton, false); //
},
3000
);
}
//
function eventMenuButton(){
window.plugins.ToastPlugin.show_short(' !');
}
//
function eventSearchButton(){
window.plugins.ToastPlugin.show_short(' !');
}