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方法中获取了。怎么办。相关推荐

  1. 如何无缝监听安卓手机通知栏推送信息以及拒接来电

    作者:咕咚移动技术团队-乔瑟琳 一.监听安卓手机通知栏推送信息 最近在需求中需要实现监听安卓手机通知栏信息的功能,比如实时获取qq.微信.短信消息.一开始评估是件挺简单的事儿,实现 Notificat ...

  2. 移动端监听安卓手机返回键

    [场景] 相信大家用安卓手机使用APP的过程中,会遇到这样的一个场景:按下手机的返回键时,会弹出一个询问框:"是否退出该页面/APP?",然后点击了确认键才真正退出APP.PC端目 ...

  3. 移动端监听安卓手机返回键 1

    [场景] 相信大家用安卓手机使用APP的过程中,会遇到这样的一个场景:按下手机的返回键时,会弹出一个询问框:"是否退出该页面/APP?",然后点击了确认键才真正退出APP.PC端目 ...

  4. 混合开发监听安卓手机物理返回键

    混合开发监听安卓手机物理返回键 在用h5做混合开发过程中由于有个考试考试页面,中途不能退出,退出要添加确认操作,所以需要监听手机的返回操作,不让用户直接通过返回键返回 目前了解到混合开发中有两种方式监 ...

  5. Delphi 监听安卓(Android)手机通知栏信息

    Delphi 监听安卓(Android)手机通知栏信息 因为一些业务需要,我们有时候需要知道手机通知栏显示的信息,然后根据这些信息去处理一些相应的业务逻辑.如:自动监听收到的短信验证码,提取后自动填写 ...

  6. Android Home键按键事件监听

    平时用的比较多的是Back键按键的监听,但是后来修改相机问题时遇到了需要监听Home键的情况,遂各种搜索资料,get到如下技能: Home键的监听也需要注册广播接收器(采用动态注册的方式),通过拦截让 ...

  7. dcloud 5+ 监听安卓前后台切换状态 并后台运行程序

    dcloud 5+ 监听安卓前后台切换状态 并后台运行程序 监听安卓前后台切换状态 function monitorRunStatus() {// 部分型号监听"应用从前台切换到后台&quo ...

  8. angular监听输入框值的变化_angular 实时监听input框value值的变化触发函数方法

    用angulajs + ionic 做了一个登陆页面.效果要通过监听输入框的变化来判断登陆按钮是否可点击.当至少一个输入框为空时登录按钮不可点击.一开始是用的jquery的方法做的,后来发现刷新当前页 ...

  9. Android 在onCreate()方法中获取控件宽高值为0解决方案

    大家很多时候需要在Activity或者Fragment的onCreate()方法中获取声明的空间的高度或者宽度,进行位置移动或者其他操作,但是当调用 view.getHeight() 或者 view. ...

最新文章

  1. Datawhale组队学习周报(第047周)
  2. 高通驱动9008安装_赛多利斯Sartorius-ambr? 250 高通量灌注培养系统
  3. python调用摄像头转向_教你如何利用python调用摄像头
  4. linux下将只读文件改为可读可写
  5. LVS(9)——为NAT单独增加路由器
  6. 解调去载波后均衡信道与实际信道的关系
  7. 科研诚信与学术规范_大学教授学术造假,违背科研诚信
  8. jenkins-系统管理-节点管理进去报错
  9. mysql分组统计以及全部统计union all使用
  10. Android10加入APEX目的
  11. 分布式系统的Raft算法 1
  12. VB6连接各种类型的数据库
  13. 如何录制英雄联盟 (LoL) 游戏视频
  14. 如何使用腾讯云轻量应用服务器搭建免费开源企业CMS?
  15. 群晖家用NAS选购心得
  16. %@ Page% page指令属性
  17. 4t硬盘实际容量是多少_怎么对大容量硬盘(例如4T硬盘)进行查看并分区
  18. 宠物之家网站大学生网页制作教程 学生HTML静态宠物网页设计作业成品 DIV布局简单动物网页制作代码
  19. 海外媒体发稿技巧:滚金石海内外媒体教您海外发稿技巧
  20. Python中的复数和误区

热门文章

  1. Vue使用Vditor编辑器
  2. Java 性能优化系列之4[Java性能调优工具]
  3. JavaScript 之arguments、caller 和 callee 介绍
  4. Windows 下 PHP 开发环境配置系列三 - eclipse PDT + Zend Debugger 调试web 项目
  5. Windows操作系统的各进程的作用
  6. java调用远程主机shell_Java 执行远程主机shell命令代码
  7. 禁止复制php,wordpress禁止复制内容的实现方法
  8. mysql 8 启动失败(本地计算机上的mysql服务启动后停止。某些服务再未由其他服务或程序使用时将自动停止)
  9. Python调用seek(pos,mode)方法报错Can‘t do nonzero cur-relative seeks
  10. linux weblogic java_options_linux系统启动weblogic受管服务器报unable to get file lock, will ret_daring的解决...