Android中对手机的返回键,Home键以及多功能切换键的监听
2017-08-10 12:01
1026 查看
编写不易,如有转载,请声明出处: 梦回河口:http://blog.csdn.net/zxc514257857/article/details/77045754
Demo下载请移步:http://download.csdn.net/download/zxc514257857/9927655
———-因本人才疏学浅,如博客或Demo中有错误的地方请大家随意指出,与大家一起讨论,共同进步,谢谢!———-
实现原理
返回键的监听通过onKeyDown实现,Home键和多功能切换键的监听通过onKeyDown实现无效,通过BroadcastReceiver实现代码实现
// BaseActivity import 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); } } ---------------------------------------------------------------------------------------- // Receiver import 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" , "多功能返回键按下"); } } } } } ---------------------------------------------------------------------------------------- // MainActivity public 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中有错误的地方请大家随意指出,与大家一起讨论,共同进步,谢谢!———-
相关文章推荐
- Android横竖屏切换, 手机锁屏以及按Home键和返回键时的Activity的生命周期
- home键、电源键、返回键等的监听-Android
- Android系统onKeyDown监控/拦截/监听/屏蔽返回键、菜单键和Home键
- Android 屏蔽返回键,home键以及其他实体按键
- Android中屏蔽返回键,HOME键以及模拟HOME键返回效果的方法
- android屏蔽返回键,home键以及其他实体按键
- 按下返回金钢键后像Home键一样切换到手机主界面,程序不关闭
- ANDROID 返回,菜单和HOME键的监听
- ANDROID 返回,菜单和HOME键的监听
- Android开发,相机拍摄并返回时,部分手机出现横竖屏切换的错误处理。
- Android监听返回键、Home键+再按一次返回键退出应用
- android屏蔽返回键,home键以及其他实体按键
- Android OnKeyDown 监控/拦截/监听/屏蔽返回键,菜单键和Home键
- [置顶] ANDROID 返回,菜单和HOME键的监听
- android 在fragment中如何监听返回键,home键
- Android生命周期,点击home键和返回键时的顺序以及MENU菜单键简单测试
- Android监听返回键、Menu键、Home键、
- android 在fragment中如何监听返回键,home键
- android屏蔽返回键,home键以及其他实体按键
- Android 物理按键的监听Back,Menu和音量(不包括home键,锁屏键,以及长按菜单的监听