拦截返回键,HOME键,继承BaseActivity即可

  1. import android.app.Activity;
  2. import android.content.BroadcastReceiver;
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.content.IntentFilter;
  6. import android.os.Bundle;
  7. import android.util.Log;
  8. import android.view.KeyEvent;
  9. import android.widget.Toast;
  10.  
  11. /**
  12. * 所有Activity继承该类,
  13. * 该类监测到home键的点击时的事件进行自己的处理
  14. * 拦截返回键
  15. * @author RongGuang
  16. *
  17. */
  18. public class BaseActivity extends Activity {
  19. // 监听HOME键
  20. HomeKeyEventBroadCastReceiver receiver;
  21.  
  22. @Override
  23. protected void onCreate(Bundle savedInstanceState) {
  24. super.onCreate(savedInstanceState);
  25.  
  26. // 监听home键广播
  27. receiver = new HomeKeyEventBroadCastReceiver();
  28. registerReceiver(receiver, new IntentFilter(
  29. Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
  30. }
  31. //拦截其他键
  32. @Override
  33. public boolean onKeyDown(int keyCode,KeyEvent event){
  34. switch(keyCode){
  35. case KeyEvent.KEYCODE_HOME:return true;
  36. case KeyEvent.KEYCODE_BACK:return true;
  37. case KeyEvent.KEYCODE_CALL:return true;
  38. case KeyEvent.KEYCODE_SYM: return true;
  39. case KeyEvent.KEYCODE_VOLUME_DOWN: return true;
  40. case KeyEvent.KEYCODE_VOLUME_UP: return true;
  41. case KeyEvent.KEYCODE_STAR: return true;
  42. }
  43. return super.onKeyDown(keyCode, event);
  44. }
  45. @Override
  46. protected void onDestroy() {
  47. unregisterReceiver(receiver);
  48. super.onDestroy();
  49. }
  50.  
  51. class HomeKeyEventBroadCastReceiver extends BroadcastReceiver {
  52. static final String SYSTEM_REASON = "reason";
  53. static final String SYSTEM_HOME_KEY = "homekey";// home key
  54. static final String SYSTEM_RECENT_APPS = "recentapps";// long home key
  55.  
  56. @Override
  57. public void onReceive(Context context, Intent intent) {
  58. String action = intent.getAction();
  59. if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
  60. String reason = intent.getStringExtra(SYSTEM_REASON);
  61. if (reason != null) {
  62. if (reason.equals(SYSTEM_HOME_KEY)) {
  63. // home key处理点
  64. Log.e("homekey", "home键被点击");
  65. Toast.makeText(BaseActivity.this, "Home键被点击", Toast.LENGTH_SHORT).show();
  66. } else if (reason.equals(SYSTEM_RECENT_APPS)) {
  67. // long homekey处理点
  68. Log.e("homekey", "长按home键");
  69. Toast.makeText(BaseActivity.this, "Home键长按", Toast.LENGTH_SHORT).show();
  70. }
  71. }
  72. }
  73. }
  74. }
  75. }

Android 监听返回键、HOME键的更多相关文章

  1. Android监听返回键、Home键+再按一次返回键退出应用

    Android监听返回键需重写onKeyDown()方法 Home键keyCode==KeyEvent.KEYCODE_HOME @Override public boolean onKeyDown( ...

  2. android 监听返回键

    android监听返回键 public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE ...

  3. Android 监听返回键退出程序的两种实现

    1.Android 双击返回键退出程序 思路:用户按下返回键时设定一个定时器来监控是否2秒内实现了退出,如果用户没有接着按返回键,则清除第一次按返回键的效果,使程序还原到第一次按下返回键之前的状态.定 ...

  4. Android 监听软键盘搜索键

    现在很多的Android应用都有了数据搜索功能,在以往的设计上,会使用搜索框+搜索按钮来实现搜索功能: 现在呢,越来越流行的是,去除搜索按钮,直接监听软键盘搜索键,当用户输入完搜索关键字后,直接点击软 ...

  5. vs xamarin android 监听返回键退出程序

    public override bool OnKeyDown([GeneratedEnum]Keycode keyCode, KeyEvent e) { if (keyCode == Keycode. ...

  6. Android WindowManager 监听返回键及home键

    一.监听home键盘,Android Home键系统负责监听,捕获后系统自动处理.有时候,我们需要监听home键处理自己的逻辑,监听方法如下: /** * 监听home键广播 */ private f ...

  7. Android 如何监听返回键,弹出一个退出对话框

    android 如何监听返回键点击事件,并创建一个退出对话框, 防止自己写的应用程序不小心点击退出键而直接退出.自己记录下这个简单的demo,备用. public class BackKeyTest ...

  8. 【Android】Android实现监听返回键,主键(HOME),菜单键

    目录结构: contents structure [+] 简介 监听 返回键 监听 主键(Home键) 监听 菜单键 一.简介 本篇文章介绍如何在Android中实现监听返回键,主键,菜单键.一般情况 ...

  9. [转]Android 如何监听返回键,弹出一个退出对话框

    本文转自:http://blog.csdn.net/sunnyfans/article/details/8094349 Android 如何监听返回键点击事件,并创建一个退出对话框, 防止自己写的应用 ...

随机推荐

  1. volatile与synchronized的区别

    1.锁提供了两种主要特性:互斥(mutual exclusion) 和可见性(visibility). 互斥即一次只允许一个线程持有某个特定的锁,因此可使用该特性实现对共享数据的协调访问协议,这样,一 ...

  2. 【iCore3双核心板】发布 iCore3 硬件手册!

    百度网盘下载: https://pan.baidu.com/s/1jHZJCbW 博客园下载: http://files.cnblogs.com/files/xiaomagee/iCore3%E7%A ...

  3. PHP 字符串的隐式转换规则以及针对包含字母的字符串的递增/递减操作

    之前一直对 PHP 中关于字符串的算数运算隐式类型转换规则和递增/递减操作符针对字符串的操作比较模糊,今天总结一下. 一.隐式转换 二进制算术运算符的隐式类型转换规则(http://php.net/m ...

  4. linux 源码安装详解

    ./configure是用来检测你的安装平台的目标特征的.比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本.make是用来编译的,它从Makefile中读取指令,然后编 ...

  5. 被swoole坑哭的PHP程序员

    被swoole坑哭的PHP程序员 2015-09-16 09:57 文帅营 博客园 字号:T | T 首先说一下对swoole的理解:披着PHP外衣的C程序.很多PHPer朋友看到swoole提供的强 ...

  6. HTML5 history新特性pushState、replaceState

    DOM中的window对象通过window.history方法提供了对浏览器历史记录的读取,让你可以在用户的访问记录中前进和后退. 从HTML5开始,我们可以开始操作这个历史记录堆栈. 1.Histo ...

  7. 轻量级队列beanstalkd

    一.基本Beanstalkd,一个高性能.轻量级的分布式内存队列系统,最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟,支持过有9.5 million用户的Face ...

  8. [skill] 进程 线程

    在业务逻辑上: 进程线程没有区别. 在系统资源上: 进程拥有自己的地址空间.线程拥有自己的堆栈和临时变量,与其他线程共享地址空间. 在通信代价上: 线程间通信代价更低,实现更方便.进程通信相对开销比较 ...

  9. ORM系列之二:EF(4) 约定、注释、Fluent API

    目录 1.前言 2.约定 2.1 主键约定 2.2 关系约定 2.3 复杂类型约定 3.数据注释 3.1 主键 3.2 必需 3.3 MaxLength和MinLength 3.4 NotMapped ...

  10. cloudera learning6:Hadoop Security

    保证Hadoop安全的最有效方法是对cluster进行隔离(isolation,常用方法是把大集群划分若干个小集群). Hadoop安全措施的目的是防止好的人不小心做了坏的事,而非防止坏人坏事. Ke ...