在Android中的JQuery Mobile硬件后退按钮按下

时间:2015-10-14 09:08:35

标签: android jquery-mobile

任何人都可以在特定页面的Android设备上给我硬件后退按钮事件监听器的例子吗?

我正在使用此代码但无法使用。

$(document).on('pageshow', function(){

    document.addEventListener("backbutton", function(e){                                   
        if($.mobile.activePage.is('#dept-list-page')){  
            e.preventDefault();
            alert("back  button pressed");
            navigator.app.exitApp();        
        }else{
            history.back();
        }
     }, false);
});

在Webview中,我使用的是keydown方法。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

    if (event.getAction() == KeyEvent.ACTION_DOWN) {
        switch (keyCode) {

        case KeyEvent.KEYCODE_BACK:
            if (webView != null)
                if (webView.canGoBack()) {
                    webView.goBack();
                    return true;
                }
        }
    }
    return super.onKeyDown(keyCode, event);
}

但是在一个webview中动态生成了许多html页面,我想在特定页面上查看。

1 个答案:

答案 0 :(得分:1)

如果您使用的是phonegap(cordova),那么您需要在eventlistener之后设置deviceReady

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    document.addEventListener("backbutton", onBackKeyDown, false);
}

function onBackKeyDown(e){
    if($.mobile.activePage.is('#dept-list-page')){  
        //if the page checking doesnt work try:
        // $.mobile.activePage.attr("id") == '#dept-list-page'
        e.preventDefault();
        alert("back  button pressed");
        navigator.app.exitApp();

    }else{
        history.back();
    }
}

如果您使用Android Webview,则应该使用Android代码中的后退按钮来处理

之类的内容
@Override
public void onBackPressed (){
    if(webView.canGoBack()) webView.goBack();
    else super.onBackPressed();
}