Android中对手机的返回键,Home键以及多功能切换键的监听
来源:互联网 发布:淘宝首页轮播图什么样 编辑:程序博客网 时间:2024/06/05 08:58
编写不易,如有转载,请声明出处: 梦回河口:http://blog.csdn.net/zxc514257857/article/details/77045754
实现原理
返回键的监听通过onKeyDown实现,Home键和多功能切换键的监听通过onKeyDown实现无效,通过BroadcastReceiver实现
代码实现
// BaseActivityimport android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.KeyEvent;public abstract class BaseActivity extends AppCompatActivity { private IntentFilter mFilter; private Receiver mReceiver; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(getLayoutId()); initBroadcast(); initView(); initData(); } protected void initBroadcast(){ mReceiver = new Receiver(); mFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); registerReceiver(mReceiver, mFilter); } public abstract int getLayoutId(); public abstract void initView(); public abstract void initData(); /** * 只监听不拦截返回键 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { Log.i("KeyListener" , "返回键按下"); // 是否拦截事件传递// return true; } return super.onKeyDown(keyCode, event); } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(mReceiver); }}----------------------------------------------------------------------------------------// Receiverimport android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;public class Receiver extends BroadcastReceiver { private static final String SYSTEM_DIALOG_REASON_KEY = "reason"; private static final String HOME_KEY = "homekey"; private static final String MULTITASKING_TOGGLE_KEY = "recentapps"; @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(action)) { String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY); if (reason != null) { if (HOME_KEY.equals(reason)) { Log.i("KeyListener" , "Home键按下"); } else if (MULTITASKING_TOGGLE_KEY.equals(reason)) { Log.i("KeyListener" , "多功能返回键按下"); } } } }}----------------------------------------------------------------------------------------// MainActivitypublic class MainActivity extends BaseActivity { @Override public int getLayoutId() { return R.layout.activity_main; } @Override public void initView() { } @Override public void initData() { }}
Demo下载请移步:http://download.csdn.net/download/zxc514257857/9927655
———-因本人才疏学浅,如博客或Demo中有错误的地方请大家随意指出,与大家一起讨论,共同进步,谢谢!———-
阅读全文
0 0
- Android中对手机的返回键,Home键以及多功能切换键的监听
- Android横竖屏切换, 手机锁屏以及按Home键和返回键时的Activity的生命周期
- Android对home back键的监听
- Android中对menu、home、back键的监听
- Android中对menu、home、back键的监听
- Android中对menu、home、back键的监听
- Android中屏蔽返回键,HOME键以及模拟HOME键返回效果的方法
- Android系统中home键的监听
- cocos2dx设置监听Android的返回键、Home键
- ANDROID 返回,菜单和HOME键的监听
- Android设备Home、Menu和Back返回键的监听
- ANDROID 返回,菜单和HOME键的监听
- ANDROID 返回,菜单和HOME键的监听
- 监听android的Home键
- android Home键的监听
- 监听android的home键
- android Home键的监听
- android手机上的返回键和home键
- HBase之shell操作
- WOW64下的性能和内存消耗
- c#中数组 list Arraylist
- 面向对象的六大原则
- 使用Gitblit 搭建Windows Git服务器
- Android中对手机的返回键,Home键以及多功能切换键的监听
- 初始化GDI+
- 从今天开始记录一年的学习经历
- iOS传包Error:This action could not be completed...(-22421)及Error ITMS-90168: “The binary...invalid”
- MYSQL触发器级联删除
- LYOS —— Hello World
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
- HTML5-事件-键盘-上下左右键
- Scheduled和quartz的简单比较