Home键的获取监听,安卓4.0后就不能在onkeydown方法中获取了。怎么办。
Android下得到Home键按下的消息
在Android下,并不能通过onKeyDown这样的事件来截获Home键的消息,其原因在Android的文档中已经明确的说过了
public static final int KEYCODE_HOME
Key code constant:Home key.This key is handled by the framework and is never delivered to applications.
Constant Value:3(0x00000003)
翻译就不做了,总之就是App无法截获Home键的事件(曾经有高人在2.3以下的系统中,使用偏门方法来截获Home,但是在4.0以后已经失效了,故在此不提)
那么,如何才能得到Home键按下的消息呢,办法还是有的,在此需要说明的是,由于Home键的特殊性,它的逻辑在framework内被处理,因此无法 做到截获/屏蔽Home键,而只能得到它的消息,但是在得到消息后,如果要把已经退到后台的app再启动起来,也并非不能(界面会闪一下)
以下代码用于捕捉到Home键的按下消息:
public class HomeReceiver extends BroadcastReceiver{
@override
public void onReceive(Context context,Intent intent){
String action=intent.getAction();
if(action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)){
String reason=intent.getStringExtra("reason");
if(reason!=null){
if(reason.equals("homekey")){
//home pressed
}else if(reason.equals("recentapps")){
//recentapps pressed
}
}
}
}
同时,我们也需要将这个receiver注册到程序中,以便使它生效
public HomeReceiver receiverHome=new HomeReceiver();
public IntentFilter filterHome=new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
@override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
registerReceiver(receiverHome,filterHome);
}
@override
protected void onDestroy(){
unregisterReceiver(receiverHome);
super.onDestroy();
}
这样,在上述两个TODO处,即可添加自己的代码,需要注意的是,在4.0以后,home键可能有两种reason,分别是原本的Home与显示最近的应用,在receiver中,通过判断reason字符串,可以分别处理。
转载于:https://www.cnblogs.com/yaya-Android/p/4123524.html
Home键的获取监听,安卓4.0后就不能在onkeydown方法中获取了。怎么办。相关推荐
- 如何无缝监听安卓手机通知栏推送信息以及拒接来电
作者:咕咚移动技术团队-乔瑟琳 一.监听安卓手机通知栏推送信息 最近在需求中需要实现监听安卓手机通知栏信息的功能,比如实时获取qq.微信.短信消息.一开始评估是件挺简单的事儿,实现 Notificat ...
- 移动端监听安卓手机返回键
[场景] 相信大家用安卓手机使用APP的过程中,会遇到这样的一个场景:按下手机的返回键时,会弹出一个询问框:"是否退出该页面/APP?",然后点击了确认键才真正退出APP.PC端目 ...
- 移动端监听安卓手机返回键 1
[场景] 相信大家用安卓手机使用APP的过程中,会遇到这样的一个场景:按下手机的返回键时,会弹出一个询问框:"是否退出该页面/APP?",然后点击了确认键才真正退出APP.PC端目 ...
- 混合开发监听安卓手机物理返回键
混合开发监听安卓手机物理返回键 在用h5做混合开发过程中由于有个考试考试页面,中途不能退出,退出要添加确认操作,所以需要监听手机的返回操作,不让用户直接通过返回键返回 目前了解到混合开发中有两种方式监 ...
- Delphi 监听安卓(Android)手机通知栏信息
Delphi 监听安卓(Android)手机通知栏信息 因为一些业务需要,我们有时候需要知道手机通知栏显示的信息,然后根据这些信息去处理一些相应的业务逻辑.如:自动监听收到的短信验证码,提取后自动填写 ...
- Android Home键按键事件监听
平时用的比较多的是Back键按键的监听,但是后来修改相机问题时遇到了需要监听Home键的情况,遂各种搜索资料,get到如下技能: Home键的监听也需要注册广播接收器(采用动态注册的方式),通过拦截让 ...
- dcloud 5+ 监听安卓前后台切换状态 并后台运行程序
dcloud 5+ 监听安卓前后台切换状态 并后台运行程序 监听安卓前后台切换状态 function monitorRunStatus() {// 部分型号监听"应用从前台切换到后台&quo ...
- angular监听输入框值的变化_angular 实时监听input框value值的变化触发函数方法
用angulajs + ionic 做了一个登陆页面.效果要通过监听输入框的变化来判断登陆按钮是否可点击.当至少一个输入框为空时登录按钮不可点击.一开始是用的jquery的方法做的,后来发现刷新当前页 ...
- Android 在onCreate()方法中获取控件宽高值为0解决方案
大家很多时候需要在Activity或者Fragment的onCreate()方法中获取声明的空间的高度或者宽度,进行位置移动或者其他操作,但是当调用 view.getHeight() 或者 view. ...
最新文章
- Datawhale组队学习周报(第047周)
- 高通驱动9008安装_赛多利斯Sartorius-ambr? 250 高通量灌注培养系统
- python调用摄像头转向_教你如何利用python调用摄像头
- linux下将只读文件改为可读可写
- LVS(9)——为NAT单独增加路由器
- 解调去载波后均衡信道与实际信道的关系
- 科研诚信与学术规范_大学教授学术造假,违背科研诚信
- jenkins-系统管理-节点管理进去报错
- mysql分组统计以及全部统计union all使用
- Android10加入APEX目的
- 分布式系统的Raft算法 1
- VB6连接各种类型的数据库
- 如何录制英雄联盟 (LoL) 游戏视频
- 如何使用腾讯云轻量应用服务器搭建免费开源企业CMS?
- 群晖家用NAS选购心得
- %@ Page% page指令属性
- 4t硬盘实际容量是多少_怎么对大容量硬盘(例如4T硬盘)进行查看并分区
- 宠物之家网站大学生网页制作教程 学生HTML静态宠物网页设计作业成品 DIV布局简单动物网页制作代码
- 海外媒体发稿技巧:滚金石海内外媒体教您海外发稿技巧
- Python中的复数和误区
热门文章
- Vue使用Vditor编辑器
- Java 性能优化系列之4[Java性能调优工具]
- JavaScript 之arguments、caller 和 callee 介绍
- Windows 下 PHP 开发环境配置系列三 - eclipse PDT + Zend Debugger 调试web 项目
- Windows操作系统的各进程的作用
- java调用远程主机shell_Java 执行远程主机shell命令代码
- 禁止复制php,wordpress禁止复制内容的实现方法
- mysql 8 启动失败(本地计算机上的mysql服务启动后停止。某些服务再未由其他服务或程序使用时将自动停止)
- Python调用seek(pos,mode)方法报错Can‘t do nonzero cur-relative seeks
- linux weblogic java_options_linux系统启动weblogic受管服务器报unable to get file lock, will ret_daring的解决...