zoukankan      html  css  js  c++  java
  • Cordova for android怎样在App中处理退出button事件

           项目须要在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源代码中的返回键处理代码


    以下的代码能够响应后退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('点击了 搜索 按钮!');
    }




  • 相关阅读:
    poj 2411 Mondriaan's Dream 骨牌铺放 状压dp
    zoj 3471 Most Powerful (有向图)最大生成树 状压dp
    poj 2280 Islands and Bridges 哈密尔顿路 状压dp
    hdu 3001 Travelling 经过所有点(最多两次)的最短路径 三进制状压dp
    poj 3311 Hie with the Pie 经过所有点(可重)的最短路径 floyd + 状压dp
    poj 1185 炮兵阵地 状压dp
    poj 3254 Corn Fields 状压dp入门
    loj 6278 6279 数列分块入门 2 3
    VIM记事——大小写转换
    DKIM支持样本上传做检测的网站
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4069269.html
Copyright © 2011-2022 走看看