Home点击监听及示例
来源:互联网 发布:元数据管理工具 编辑:程序博客网 时间:2024/06/05 17:01
/** * Home键监听封装 */
public class HomeWatcher{ static final String TAG = "HomeWatcher"; private Context mContext; private IntentFilter mFilter; private OnHomePressedListener mListener; private InnerRecevier mRecevier; // 回调接口 public interface OnHomePressedListener{ public void onHomePressed(); //点击 public void onHomeLongPressed(); //长按 } public HomeWatcher(Context context){ mContext = context; mFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); } /** * 设置监听 * @param listener * / public void setOnHomePressedListener(OnHomePressedListener listener){ mListener = listener; mRecevier = new InnerRecevier(); } /** * 开始监听,注册广播 */ public void startWatch(){ if (mRecevier != null) { mContext.registerReceiver(mRecevier, mFilter); } } /** * 停止监听,注销广播 */ public voids topWatch(){ if (mRecevier != null) { mContext.unregisterReceiver(mRecevier); } } class InnerRecevier extends BroadcastReceiver{ final String SYSTEM_DIALOG_REASON_KEY = "reason"; final String SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS = "globalactions"; final String SYSTEM_DIALOG_REASON_RECENT_APPS = "recentapps"; final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey"; @Override public void onReceive(Context context, Intent intent){ String action = intent.getAction(); if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) { String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY); if (reason != null) { Log.e(TAG, "action:" + action + ",reason:" + reason); if (mListener != null) { if (reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)) { // 短按home键 mListener.onHomePressed(); } elseif (reason .equals(SYSTEM_DIALOG_REASON_RECENT_APPS)) { // 长按home键 mListener.onHomeLongPressed(); } } } } } } }
使用方式:
public class MainActivity extends Activity{ private static final String TAG = "MainActivity"; private HomeWatcher mHomeWatcher; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mHomeWatcher = new HomeWatcher(this); mHomeWatcher.setOnHomePressedListener(new OnHomePressedListener() { @Override public void onHomePressed(){ Log.e(TAG, "onHomePressed"); //这个点击不一定每次都有,有的时候有,有的时候没有 } @Override public void onHomeLongPressed(){ Log.e(TAG, "onHomeLongPressed"); } }); mHomeWatcher.startWatch(); } @Override protected void onPause(){ super.onPause(); mHomeWatcher.stopWatch();// 在onPause中停止监听,不然会报错的。 } }
0 0
- Home点击监听及示例
- Home键点击监听
- home键监听点击
- 监听Home键点击事件
- Android监听是否点击了home键或者锁屏键
- iOS在控制器中监听是否点击Home键以及重新进入界面的方法
- 监听是否点击了home键将客户端推到后台
- home键监听
- home键监听
- 监听home键
- home键监听
- home键监听
- android监听home键
- android 监听HOME键
- 监听HOME键
- 监听home键
- Android 监听Home键
- 监听HOME键
- Android知识点汇总
- String变量的比较
- 日积月累的jit-lib方法,
- java引用形参实参运行结果
- 黑客技能表
- Home点击监听及示例
- HTML5 Geolocation API (地理位置应用程序接口)获取地理位置
- POJ 2560Freckles(并查集)
- AsyncTask 内部实现机制
- shell中的函数
- 面向对象练习题
- 自己实现将整型转化为字符型
- MySQL server has gone away
- AngularJS实现跨域请求