本文实例讲述了Android开发实现长按返回键弹出关机框功能。分享给大家供大家参考,具体如下:

今天刚好在PhoneWindowManager.java下看,当看到长按Home键的功能时,突然想到是不是可以长按back键来弹出关机框。
有想法就试试呗。当然想法是根据长按home键来的,那么我们应该可以模仿长按Home键来做。经过一番实验,貌似好像可以,拿出来给大家分享一下!!!
先找到PhoneWindowManager.java文件,在framework/base/policy/src/com/....下,在里面我们能找到关机框showGlobalActionsDialog() (长按power),最近浏览应用程序showRecentAppsDialog() (长按home),那么我们就模仿长按home来调用关机框showGlobalActionsDialog()。
我们能找到Runnable mPowerLongPress = new Runnable() 和mHomeLongPress = new Runnable(),因此我们也要创建一个长按back键的线程
/*****************************************************/
//add by xxnan
Runnable mBackLongPress = new Runnable() {
public void run() {
mBackPressed = false;
performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false);
sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS);
showGlobalActionsDialog();
}
};
/*****************************************************/
里面的新增mBackPressed,当然你要在开始定义一下boolean型的mBackPressed,而
performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false); sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS);
两句则是用mPowerLongPress的,最后就是显示关机框了showGlobalActionsDialog()。
而在interceptKeyBeforeDispatching()中我们也要做相应的增加:
/*****************************************************/
//add by xxnan
if ((keyCode == KeyEvent.KEYCODE_BACK) && !down) {
mHandler.removeCallbacks(mBackLongPress);//应该是取消长按
}
if (mBackPressed) {
if (keyCode == KeyEvent.KEYCODE_BACK)
{
if (!down) {
mBackPressed = false;
}
}
}
if ((keyCode == KeyEvent.KEYCODE_BACK))
{
if (down && repeatCount != 0) {//如果按下back键而且repeatCount不等于0,(只按一下back键repeatCount的值为0,长按repeatCount的值就会随时间的增加而增加,而且当长按back键repeatCount>10才会弹出关机框)
if (!keyguardOn) {//不管长按还是短按keyguardOn都等于false
Log.i("longpressback","longpressback");
mHandler.postDelayed(mBackLongPress, ViewConfiguration.getGlobalActionKeyTimeout());//调用长按back的线程mBackLongPress
}
mBackPressed = true;
}
}
/*****************************************************/
剩下的就是编译一下framework/base下的policy。。。将生成的system/framework/android.policy.jar替换手机里的就可以了重新启动就ok了!!!附图一张
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
# Android
# 长按
# 返回键
# 弹出
# 关机框
# android实现短按电源键关机的实现代码
# Android平台预置GMS包后关机闹钟失效问题及解决方法
# Android实现关机后数据不会丢失问题
# Android 6.0开发实现关机菜单添加重启按钮的方法
# Android仿苹果关机界面实现代码
# Android 修改系统关机动画的实现
# Android下的CMD命令之关机重启及重启recovery
# Android实现关机与重启的几种方式(推荐)
# Android系统关机的全流程解析
# Android 实现关机的多种方式
# 给大家
# 能找到
# 进阶
# 就会
# 相关内容
# 也要
# 则是
# 才会
# 而在
# 要在
# 感兴趣
# 要做
# 在里面
# 按下
# 两句
# 拿出来
# 来做
# 我们应该
# 更多关于
相关文章:
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
建站之星如何配置系统实现高效建站?
h5在线制作网站电脑版下载,h5网页制作软件?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
建站主机CVM配置优化、SEO策略与性能提升指南
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
广州美橙建站如何快速搭建多端合一网站?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
高端云建站费用究竟需要多少预算?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
如何快速配置高效服务器建站软件?
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
深入理解Android中的xmlns:tools属性
宿州网站制作公司兴策,安徽省低保查询网站?
怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
网站网页制作专业公司,怎样制作自己的网页?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
5种Android数据存储方式汇总
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
如何快速使用云服务器搭建个人网站?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
建站之星如何快速生成多端适配网站?
javascript基本数据类型及类型检测常用方法小结
学校免费自助建站系统:智能生成+拖拽设计+多端适配
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
建站之星如何快速解决建站难题?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
如何通过NAT技术实现内网高效建站?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
电商平台网站制作流程,电商网站如何制作?
如何制作一个表白网站视频,关于勇敢表白的小标题?
,柠檬视频怎样兑换vip?
音乐网站服务器如何优化API响应速度?
如何在宝塔面板中修改默认建站目录?
建站之星代理如何获取技术支持?
如何在Windows 2008云服务器安全搭建网站?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
宝塔建站无法访问?如何排查配置与端口问题?
导航网站建站方案与优化指南:一站式高效搭建技巧解析
如何通过网站建站时间优化SEO与用户体验?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
制作旅游网站html,怎样注册旅游网站?
如何通过VPS搭建网站快速盈利?
网站按钮制作软件,如何实现网页中按钮的自动点击?
建站VPS推荐:2025年高性能服务器配置指南
*请认真填写需求信息,我们会在24小时内与您取得联系。