Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Cordova for android如何在App中處理退出按鈕事件

Cordova for android如何在App中處理退出按鈕事件

編輯:關於Android編程

項目需要在HTML5 Android App中加入對返回鍵的處理,發現直接在Activity中加返回鍵處理代碼不起作用,分析cordova源碼發現返回鍵已經被WebView處理掉了,所以只能在js中處理返回鍵了!

 @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源碼中的返回鍵處理代碼


下面的代碼可以響應後退按鈕,並提示用戶再次點擊才退出。
如果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('點擊了 搜索 按鈕!');
}




  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved