Android开发实现长按返回键弹出关机框功能
本文实例讲述了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程序设计有所帮助。