博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cordova for android怎样在App中处理退出button事件
阅读量:6538 次
发布时间:2019-06-24

本文共 2173 字,大约阅读时间需要 7 分钟。

       项目须要在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秒后没有点击则又一次事件。

注意:.plugins.ToastPlugin.show_short()是显示toast消息的插件!

代码:

// 等待载入PhoneGapdocument.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('点击了 搜索 按钮!');}

转载地址:http://qpbdo.baihongyu.com/

你可能感兴趣的文章
linux系统配置之bash shell的配置(centos)
查看>>
linux C 9*9
查看>>
hdu 1695: GCD 【莫比乌斯反演】
查看>>
python的string操作总结
查看>>
如何把word中的图片怎么导出来呢?
查看>>
CMD指令大全
查看>>
十五天精通WCF——第二天 告别烦恼的config配置
查看>>
Qt多线程学习:创建多线程
查看>>
设计模式学习---UML常见关系的实现
查看>>
图解openssl实现私有CA
查看>>
BZOJ2213 : [Poi2011]Difference
查看>>
c++ Constructor FAQ 继续
查看>>
事务之六:spring 嵌套事务
查看>>
C#:路径
查看>>
iOS图片加载速度极限优化—FastImageCache解析
查看>>
PHP中的一些新特性
查看>>
I.MX6 Android mmm convenient to use
查看>>
[CareerCup] 13.9 Aligned Malloc and Free Function 写一对申请和释放内存函数
查看>>
Stack and Heap 堆和栈的区别
查看>>
什么是 A 轮融资?有 B轮 C轮么?
查看>>