Android通过Intent.ACTION_CLOSE_SYSTEM_DIALOGS监听Home按键事件
2016-01-25 16:14
926 查看
原文链接:http://www.itnose.net/detail/6115323.html
这个参考了太多,算转载吧,我也不知道怎么样才算原创。比如有些博客参考了别人博客的部分代码,然后另外大部分是自己写的,那算不算原创,,,也罢,目的也只是记录一下,同时调整一下布局,弄的好看点,以便以后参考。
安卓手机中底下都会有三个安卓(魅族奇葩),菜单,返回,HOME键。
返回键用的最多,有独立的方法去监听:onBackPressed。
菜单键用的越来越少了,监听:onKeyDown或者onKeyUp都可。
但是HOME键并没有直接的方法去监听,这里使用了广播监听。
原文原话:在每次点击Home按键时都会发出一个action为Intent.ACTION_CLOSE_SYSTEM_DIALOGS的广播,它是关闭系统Dialog的广播,我们可以通过注册它来监听Home按键消息。
这个参考了太多,算转载吧,我也不知道怎么样才算原创。比如有些博客参考了别人博客的部分代码,然后另外大部分是自己写的,那算不算原创,,,也罢,目的也只是记录一下,同时调整一下布局,弄的好看点,以便以后参考。
安卓手机中底下都会有三个安卓(魅族奇葩),菜单,返回,HOME键。
返回键用的最多,有独立的方法去监听:onBackPressed。
菜单键用的越来越少了,监听:onKeyDown或者onKeyUp都可。
但是HOME键并没有直接的方法去监听,这里使用了广播监听。
原文原话:在每次点击Home按键时都会发出一个action为Intent.ACTION_CLOSE_SYSTEM_DIALOGS的广播,它是关闭系统Dialog的广播,我们可以通过注册它来监听Home按键消息。
工具类
[code]package com.example.qiao.test.utils; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; /** * HOME键监听类。 */ public class HomeKeyListener extends BroadcastReceiver { private Context context; public HomeKeyListener(Context context) { this.context = context; } /** * 通常在Activity的onStart方法中调用 */ public void start() { IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); context.registerReceiver(this, filter); } /** * 通常在Activity的onStop方法中调用 */ public void stop() { context.unregisterReceiver(this); } @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(action)) { String reason = intent.getStringExtra("reason"); if ("homekey".equals(reason)) { // 按下HOME健 if (mOnHomeKeyPressListener != null) { mOnHomeKeyPressListener.onHomeKeyPress(); } } else if ("recentapps".equals(reason)) { // 长按HOME键 if (mOnHomeKeyLongPressListener != null) { mOnHomeKeyLongPressListener.onHomeKeyLongPress(); } } } } // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // 按下 // (这里把 Press 和 LongPress 分开是为了能够使用Lambda) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ private OnHomeKeyPressListener mOnHomeKeyPressListener; public void setOnHomeKeyPressListener(OnHomeKeyPressListener listener) { mOnHomeKeyPressListener = listener; } public interface OnHomeKeyPressListener { void onHomeKeyPress(); } // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // 长按 // (长按通常不用。很多手机把长按做成了系统级别的其它功能,比如启动语音助手) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ private OnHomeKeyLongPressListener mOnHomeKeyLongPressListener; public void setOnHomekeyLongPressListener(OnHomeKeyLongPressListener listener) { mOnHomeKeyLongPressListener = listener; } public interface OnHomeKeyLongPressListener { void onHomeKeyLongPress(); } }
使用例子
[code]package com.example.qiao.test; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.widget.Toast; import com.example.qiao.test.utils.HomeKeyListener; public class MainActivity extends Activity { private Context context; private HomeKeyListener listener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.context = this; listener = new HomeKeyListener(this); listener.setOnHomeKeyPressListener(() -> { Toast.makeText(context, "按下了HOME键", Toast.LENGTH_SHORT).show(); }); listener.setOnHomekeyLongPressListener(() -> { Toast.makeText(context, "长按了HOME键", Toast.LENGTH_SHORT).show(); }); } @Override protected void onStart() { listener.start(); super.onStart(); } @Override protected void onStop() { listener.stop(); super.onStop(); } }
相关文章推荐
- [Android]自定义圆形图片
- 使用Android开源工具PullToRefresh实现上啦刷新下拉加载
- 使用RxBinding处理控件异步调用
- Android音谱
- [置顶] Android实现应用的增量更新\升级
- android AsyncTask使用注意事项以及总结
- Android LayoutInflater详解
- Android开发实现异步加载图片
- Android 实现自己定义多级树控件和全选与反选的效果
- Android应用程序的Activity启动过程简要介绍和学习计划
- Android开发点击返回键退出(出现dialog)
- 安卓开发者必备的42个链接
- android屏幕亮度调节
- android之字体阴影效果
- android 比较靠谱的图片压缩
- Android锁屏状态下弹出activity
- Android中用layer-list编写阴影效果
- android 加密导出apk
- Android应用开发allowBackup敏感信息泄露的一点反思
- Android layout属性大全