01 private final BroadcastReceiver homePressReceiver = new BroadcastReceiver() {
02 final String SYSTEM_DIALOG_REASON_KEY = "reason";
03 final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey";
04 @Override
05 public void onReceive(Context context, Intent intent) {
06 String action = intent.getAction();
07 if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
08 String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);
09 if (reason != null && reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)) {
10 //自己随意控制程序,关闭...
11 }
12 }
13 }
14 };

然后在onreate()方法中,注册

1 final IntentFilter homeFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
2 registerReceiver(homePressReceiver, homeFilter);

当然最后为了程序的严谨性也是为了防止出错,我们在onDestory()方法中,也要解除注册

1 if(homePressReceiver != null){
2 try {
3 unregisterReceiver(homePressReceiver);
4 catch (Exception e) {
5 Log.e(TAG, "unregisterReceiver homePressReceiver failure :"+e.getCause());
6 }
7 }

2,电源监听,先要有权限

1 <uses-permission android:name="android.permission.WAKE_LOCK" />

然后监听两个action

01 Intent.ACTION_SCREEN_OFF
02 Intent.ACTION_SCREEN_ON
03 private final BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver() {
04 @Override
05 public void onReceive(final Context context, final Intent intent) {
06 final String action = intent.getAction();
07 if (Intent.ACTION_SCREEN_OFF.equals(action)) {
08 //退出程序...
09 }
10 }
11 };
12 onCreate()方法中注册
13 IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
14 registerReceiver(mBatInfoReceiver, filter);
15 onDestory()方法中解除注册
16 if(mBatInfoReceiver != null){
17 try {
18 unregisterReceiver(mBatInfoReceiver);
19 catch (Exception e) {
20 Log.e(TAG, "unregisterReceiver mBatInfoReceiver failure :"+e.getCause());
21 }
22 }

android程序监听home键与电源键的更多相关文章

  1. Android 开发 监听back并且执行home键功能

    方法一: 在activity中重写onBackPressed()方法 ,注意此处一定要注释或者删除 super.onBackPressed();方法 @Override public void onB ...

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

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

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

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

  4. android应用程序监听SMS Intent广播

    当设备接收到一条新的SMS消息时,就会广播一个包含了android.provider.Telephony.SMS_RECEIVED动作的Intent. 对于应用程序监听SMS Intent广播,首先需 ...

  5. Android onKeyDown监听返回键无效

    当我们的Activity继承了TabActivity,在该类中重写onKeyDown是监听不到返回键的, 具体解决方法如下: 重写dispatchKeyEvent /** * 退出 */ @Overr ...

  6. Android如何监听蓝牙耳机的按键事件

    写在前面: 直接想要代码很简单,你直接把滚动条拉到最底端就可以看到.如果想要十分地了解为什么,那就按照我规划的一步一步来理解.以下测试环境以手头上有的「Bluedio + 红米手机」. 1.蓝牙耳机的 ...

  7. Android如何监听蓝牙耳机的按键事件(转)

    源: Android如何监听蓝牙耳机的按键事件 写在前面: 直接想要代码很简单,你直接把滚动条拉到最底端就可以看到.如果想要十分地了解为什么,那就按照我规划的一步一步来理解.以下测试环境以手头上有的「 ...

  8. Android怎样监听蓝牙耳机的按键事件

    Android怎样监听蓝牙耳机的按键事件 写在前面: 直接想要代码非常easy,你直接把滚动栏拉到最底端就能够看到.假设想要十分地了解为什么,那就依照我规划的一步一步来理解.下面測试环境以手头上有的「 ...

  9. Android 如何监听输入法关闭事件

    假设有如下界面(输入法的上面的输入区域是用Dialog实现的) 要求当输入法关闭的时候,Dialog也一起关闭,这样用户就不需要返回两次了. 网上找了很多资料都没有很好的解决这个问题,输入法是第三方程 ...

随机推荐

  1. ING【转载】epoll总结系列

    epoll的总结之一基本的参数设置 http://fpcfjf.blog.163.com/blog/static/55469793201452095738566/?suggestedreading&a ...

  2. Informatica 常用组件Lookup之六 查询

    PowerCenter 基于您在查找转换中配置的端口和属性来查询查找.当第一行输入到查找转换时,PowerCenter 运行一个默认的 SQL 语句.如果使用关系查找,您可以在"查找 SQL ...

  3. Informatica 常用组件Filter之一 概述

    转换类型:已连接.主动 过滤器转换允许您过滤映射中的行.通过过滤器转换从源转换传递所有的行,然后为转换输入过滤条件.所有过滤器转换中的端口均为输入/输出端口,只有符合条件的行才能通过过滤器转换. 在某 ...

  4. C语言条件编译

    使用与平台有关的C语言函数,可能会使得程序不具有可移植性.比如Socket编程.多线程编程等是与平台有关的. 若想将程序做成平台无关的就需要用到与平台相关的条件编译. 下面转自:http://blog ...

  5. Java基础(十一):接口

    一.接口: 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法. 接口并不是 ...

  6. 有关String的转换的一篇好文章

      Pay Close Attention - String Handling I need to make a detour for a few moments, and discuss how t ...

  7. Memcached和Memcache 配置教程windows X64

    一.Memcached和Memcache的区别: 网上关于Memcached和Memcache的区别的理解众说纷纭,我个人的理解是: Memcached是一个内存缓存系统,而Memcache是php的 ...

  8. [Algorithm] Search for matching words

    Implement an autocomplete system. That is, given a query string s and a set of all possible query st ...

  9. MySQL的IF函数

    格式:IF(Condition,A,B) 意义:当Condition为TRUE时,返回A:当Condition为FALSE时,返回B. 作用:作为条件语句使用. 例子: SELECT    fullN ...

  10. C++:cin、cin.getline()、getline()的用法

    主要内容: 1.cin用法 2.cin.getline()用法 3.getline()用法 3.注意的问题 一.cin>> 用法1:输入一个数字或字符 #include <iostr ...