Android中监听"电源键长按"、"Home键"、"Home键长按"

 

这几个“按钮”的触发,都会产生一个Action ==Intent.ACTION_CLOSE_SYSTEM_DIALOGS的通知

区分他们三个的不同事件的参数,就是随着Intent带过来的reason字符串,分别对应

"电源键长按"(globalscreen)、"Home键"(homekey)、"Home键长按"(recentapps)

说破了就这么简单,直接上代码了。

 

package com.jumpinus.test;import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;public class MainActivity extends Activity {private MyBroadCastReceiver myBroadCastReceiver;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);myBroadCastReceiver = new MyBroadCastReceiver();}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();IntentFilter intentFilter = new IntentFilter();intentFilter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);System.out.println("I'm coming, myBroadCastReceiver注册了!");registerReceiver(myBroadCastReceiver, intentFilter);}private class MyBroadCastReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent) {//你自己先把 reasons == homekey 和 长按homekey 排除,剩下的做下面的处理String reason = intent.getStringExtra("reason");if (intent.getAction().equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)){System.out.println("Intent.ACTION_CLOSE_SYSTEM_DIALOGS : " + intent.getStringExtra("reason"));if (intent.getExtras()!=null && intent.getExtras().getBoolean("myReason")){myBroadCastReceiver.abortBroadcast();}else if (reason != null){if (reason.equalsIgnoreCase("globalactions")){//监听电源长按键的方法:Intent myIntent = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);myIntent.putExtra("myReason", true);context.sendOrderedBroadcast(myIntent, null);System.out.println("电源  键被长按");}else if (reason.equalsIgnoreCase("homekey")){//监听Home键的方法//在这里做一些你自己想要的操作,比如重新打开自己的锁屏程序界面,这样子就不会消失了System.out.println("Home 键被触发");}else if (reason.equalsIgnoreCase("recentapps")){//监听Home键长按的方法System.out.println("Home 键被长按");}}}}}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();System.out.println("I get out, myBroadCastReceiver注销了!");unregisterReceiver(myBroadCastReceiver);}}监听Home键的方法//在这里做一些你自己想要的操作,比如重新打开自己的锁屏程序界面,这样子就不会消失了System.out.println("Home 键被触发");}else if (reason.equalsIgnoreCase("recentapps")){//监听Home键长按的方法System.out.println("Home 键被长按");}}}}}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();System.out.println("I get out, myBroadCastReceiver注销了!");unregisterReceiver(myBroadCastReceiver);}}

 

 

 

 

效果图:

Android中监听

 

更多相关文章

  1. HorizontalScrollView不显示滚动条,布局完全填充的方法
  2. android轻量框架五__配置界面
  3. Android数据存储的方法
  4. Intent跳转到系统应用中的拨号界面、联系人界面、短信界面及其他
  5. 在Android命令行启动程序的方法
  6. 学习Android界面设计的超级利器HierarchyView
  7. Android 如何更换屏幕上锁界面背景图片

随机推荐

  1. Android异步处理一:使用Thread+Handler实
  2. Android中EditText的inputType属性值
  3. Android与JavaScript相互调用(Android和h
  4. 相对布局中一些常用属性
  5. Android 相对布局 RelativeLayout 属性 (
  6. Android下创建一个sqlite数据库
  7. Android中的坐标系统
  8. android padding和margin的区别
  9. Android(安卓)查看SharedPreferences中的
  10. 在Android设备与Mac电脑之间传输文件