当前位置: 首页 > 编程笔记 >

Android 解决监听home键的几种方法

终彬郁
2023-03-14
本文向大家介绍Android 解决监听home键的几种方法,包括了Android 解决监听home键的几种方法的使用技巧和注意事项,需要的朋友参考一下

Android 解决监听home键的几种方法

前言:

以下两种方法可以完美解决监听back键,home键,多任务键(最近任务键)。

一、使用注册广播监听home键、多任务键

演示图

创建一个广播代码如下:

class InnerRecevier extends BroadcastReceiver {

  final String SYSTEM_DIALOG_REASON_KEY = "reason";

  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 (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(action)) {
    String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);
    if (reason != null) {
     if (reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)) {
      Toast.makeText(MainActivity.this, "Home键被监听", Toast.LENGTH_SHORT).show();
     } else if (reason.equals(SYSTEM_DIALOG_REASON_RECENT_APPS)) {
      Toast.makeText(MainActivity.this, "多任务键被监听", Toast.LENGTH_SHORT).show();
     }
    }
   }
  }
 }

在Activity中的onCreate()方法中注册广播,代码如下:

@Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  //创建广播
  InnerRecevier innerReceiver = new InnerRecevier();
  //动态注册广播
  IntentFilter intentFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
  //启动广播
  registerReceiver(innerReceiver, intentFilter);
 }

这样的话,就ok了。这种方式能对home键与多任务键实现全盘监听,但你无法去屏蔽系统的行为。

二、重写onKeyDown()监听、屏蔽back键、home键

在Activity中重写onKeyDown(),代码如下:

@Override
 public boolean onKeyDown(int keyCode, KeyEvent event) {
  if (keyCode == KeyEvent.KEYCODE_BACK) {
   Toast.makeText(MainActivity.this, "返回键无效", Toast.LENGTH_SHORT).show();
   return true;//return true;拦截事件传递,从而屏蔽back键。
  }
  if (KeyEvent.KEYCODE_HOME == keyCode) {
   Toast.makeText(getApplicationContext(), "HOME 键已被禁用...", Toast.LENGTH_SHORT).show();
   return true;//同理
  }
  return super.onKeyDown(keyCode, event);
 }

在Activity中onCreate()中添加代码,代码如下:

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  //在setContentView之前添加,未添加的话home键监听无效,设置窗体属性
  this.getWindow().setFlags(0x80000000, 0x80000000);
  setContentView(R.layout.activity_main);
 }

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

 类似资料:
  • 本文向大家介绍Android中监听Home键的4种方法总结,包括了Android中监听Home键的4种方法总结的使用技巧和注意事项,需要的朋友参考一下 昨天需要处理一个问题,需要监听home键。最开始想到使用onKeydonwn这个方法。但是发现home不能这样处理,onKeydonwn可以处理菜单键和back键,但home不能。因为home键是系统键,情况特殊一些。 看了一下网上的资料,说下面的

  • 本文向大家介绍Android中Home键的监听和拦截示例,包括了Android中Home键的监听和拦截示例的使用技巧和注意事项,需要的朋友参考一下 首先大家应该先了解一种情况,就是Android在应用中是无法拦截Home键的,今天我们带大家看一下Home键的三种情况。 1、在应用中按下Home键的逻辑处理 当我们在应用中按下Home键时界面会启动到桌面,我们在frameworks\base\pol

  • 本文向大家介绍Android App实现监听软键盘按键的三种方式,包括了Android App实现监听软键盘按键的三种方式的使用技巧和注意事项,需要的朋友参考一下 前言: 我们在Android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的“Go”按键加载url页面;在点击搜索框的时候,点击右下角的search符号键可以进行搜索;或者在全部数据

  • 本文向大家介绍Android监听软键盘弹出与隐藏的两种方法,包括了Android监听软键盘弹出与隐藏的两种方法的使用技巧和注意事项,需要的朋友参考一下 需求: 现在有一个需求是点击一行文本框,弹出一个之前隐藏的输入框,输入完成后按返回键或者其他的东西隐藏键盘和输入框,将输入框的内容填充到文本框中。 实现: 拿到这个需求的第一反应就是写一个监听来监听键盘的显示和隐藏来控制输入框的显示和隐藏,控制文本

  • 本文向大家介绍写出几种IE6 bug的解决方法相关面试题,主要包含被问及写出几种IE6 bug的解决方法时的应答技巧和注意事项,需要的朋友参考一下 1)png24位的图片在iE6浏览器上出现背景,解决方案是做成PNG8.也可以引用一段脚本处理. 2)IE6双倍边距bug:在该元素中加入display:inline 或 display:block 3)像素问题 使用多个float和注释引起的 使用d

  • 本文向大家介绍Android中监听未接来电的2种方法,包括了Android中监听未接来电的2种方法的使用技巧和注意事项,需要的朋友参考一下 这里主要是总结一下如何监听有未接来电的问题   1.1 使用广播接收器 BrocastReceiver 实现思路 : 静态注册监听android.intent.action.PHONE_STATE 的广播接收器 当手机的状态改变后将会触发 onReceive.