Android监听Home键和Back键的简介

Android  代码片段  2021年11月10日 am9:23发布3年前 (2021)更新 91es.com站长
60 0 0

前言

Home键和BACKAndroid中最实用的,因此本文就简单的介绍一下监听HOME和BACK键。

好记性不如烂笔头

正文

由于Android的管控越来越严格,HOME键已经无法拦截,但可以监听,BACK键的监听和拦截都可以。

监听HOME键

目前监听HOME的按键,可以监听:

public static final String ACTION_CLOSE_SYSTEM_DIALOGS = "android.intent.action.CLOSE_SYSTEM_DIALOGS";

看命名就知道,这个触发用来关闭Dialog的。

直接上怎么监听。

    private BroadcastReceiver mReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (null == intent || null == intent.getAction()) {
                return;
            }
            String action = intent.getAction();
            if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(action)) {
                String reason = intent.getStringExtra("reason");
                if (!TextUtils.isEmpty(reason) && reason.equals("homekey")) {
                // home
                }
            }
        }
    };

PS: 上面这个广播还可以监听多任务键(recentapps),我这就不附上了。

监听BACK键

至于BACK键的拦截和监听,这个就比较多了。

重写Activity的onKeyDown方法
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //按下的如果是BACK,同时没有重复
           //do something ...
           return true;
    }
    return super.onKeyDown(keyCode, event);
}
重写onBackPressed方法
@Override
public void onBackPressed() {
    // 注意:仅适用于2.0或更新版的sdk版本
    return;
}

项目中比较常用的就重写onBackPressed()。

参考文章

  1. android监听Home键
  2. Android之Back键和HOME键拦截处理

 历史上的今天

  1. 2022: [代码片段]MediaCode 播放Video中的音频(0条评论)
  2. 2019: 余华:麦田里(0条评论)
版权声明 1、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com
3、 本站内容: 部分来源于网络,仅供学习和参考,若侵权请留言
3、 本站申明: 个人流水账日记,内容并不保证有效

暂无评论

暂无评论...

随机推荐

[摘]Java反射的方法反射的基本操作

这篇文字命名不太友好,但解释还是不错的。本文摘抄于《Java反射之——方法反射的基本操作》package com.imooc.reflect;import java.lang.reflect.Method;public class MethodDemo1 { public st...

替换preg_replace

推荐使用 读书导航 极客导航 :125啦极客导航(http://www.91es.com/jike.html)PHP版本升级后preg_replace过期了,虽然都可以用,为了安全考虑,PHP官方推荐使用preg_replace_callback替代。php手册(PHP 4 >= 4.0...

pengdingIntent的使用

什么是pengdingIntent?pendingIntent字面意义:等待的,未决定的Intent。要得到一个pendingIntent对象,使用方法类的静态方法getActivity(Context, int, Intent, int)getBroadcast(Context, int...

沈青黎:进个圈子锻造自己

认识一个姑娘,在北京读民办大学。到北京后,她就一直颇受表姐的照顾。姑娘的表姐是一位富商的女朋友,姑娘常常跟着表姐泡吧、搓麻将,渐渐学会了喝酒玩骰子。北京对她来说,就是酒吧里的五光十色、度假村的温泉和闹哄哄的麻将桌。姑娘就安心地待在表姐的圈子里吃喝玩乐,羡慕着表姐和她的闺蜜们的生活,盼望自己哪天也遇...

JNI之对象数组使用

前言上一篇《JNI之数组简单操作》介绍的是jintArray的使用,今天就介绍对象数组。 jarray               (数组)   jobjectArray         (object数组)   jbooleanArray       (boolean数组) ...

视频分辨率缩放适配

前言简单记录一下视频适配屏幕显示问题。正文由于视频存在各种的分辨率,屏幕显示区域是固定的,比如:private final int SCREEN_WIDTH = 1024, SCREEN_HEIGHT = 600;客户的视频分辨率存在千奇百怪的,又大有小,如果客户没有要求,一般是视频铺...