• 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('点击了 搜索 按钮!');
    }




  • 相关阅读:
    ASP标准控件的重要性
    jndi的疑惑 转
    jms中topic和queue的区别
    JNDI解析
    javascript document 对象属性(转)
    SAX解析xml全解
    java路径解析
    深度学习之美(张玉宏)——第三章 机器学习三重门
    centos7 源码编译安装 php
    centos7 源码编译安装 nginx
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4069269.html
Copyright © 2020-2023  润新知