基于RK3568 Android11 移除长按电源按键弹窗的对话框中的 [关机] 和 [紧急呼救] 选项(详细分析)

  一般来说,与Android按键窗口事件相关的基本是与frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java 这个文件有关。
  因此先打开与输入相关的日志,如下:
在这里插入图片描述
  然后重新编译烧录后查看打印的日志可以看到如下信息:

WindowManager: interceptKeyTq keycode=26 interactive=true keyguardActive=false policyFlags=22000000

  而 “keycode=26” 这个键值可以通过frameworks/native/include/android/keycodes.h这个文件中的122行中找到,如下: AKEYCODE_POWER = 26,



frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags)

在这里插入图片描述

private void interceptPowerKeyDown(KeyEvent event, boolean interactive)

在这里插入图片描述
  通过上面的分析可以清楚知道电源按键按下后需要达到设定的超时时间后才会发送电源按键长按标志的消息,那么这个消息又会通过对应的Handler对该消息进行处理。
通过查找可以找到,还是在该文件下。

private class PolicyHandler extends Handler

在这里插入图片描述

private void powerLongPress()

在这里插入图片描述

void showGlobalActionsInternal()

在这里插入图片描述
  这里我要说一下,在调用 “showGlobalActionsInternal“ 此方法之前还调用了一个显示对话框方法 “onGlobalActionsAvailableChanged” ,这个就是小的对话框,如下。
在这里插入图片描述

frameworks/base/services/core/java/com/android/server/policy/GlobalActions.java
public void showDialog(boolean keyguardShowing, boolean deviceProvisioned)

在这里插入图片描述

frameworks/base/services/core/java/com/android/server/policy/GlobalActionsProvider.java

在这里插入图片描述

frameworks/base/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
  GlobalActionsProvider接口的实现如下:

在这里插入图片描述

frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
public void showGlobalActionsMenu()

在这里插入图片描述

  那么创建并显示对话框这动作应该也是通过Handler去获取对应的 MSG_SHOW_CLOBAL_ACTIONS 标识的消息去执行的。



获取执行创建并显示对话框的源码位置

  根据前面的分析,需要通过 “MSG_SHOW_CLOBAL_ACTIONS” 这个关键词去查找,可以找到如下图:
在这里插入图片描述
在这里插入图片描述


  下面是对该执行创建并显示对话框的源码进行分析:
在这里插入图片描述
堆栈日志:
在这里插入图片描述

frameworks/base/core/java/android/os/Handler.java
public void dispatchMessage(@NonNull Message msg)
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
public void handleMessage(Message msg)

在这里插入图片描述

frameworks/base/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsComponent.java
public void handleShowGlobalActionsMenu()
frameworks/base/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java
public void showGlobalActions(GlobalActionsManager manager)
frameworks/base/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
public void showOrHideDialog(boolean keyguardShowing, boolean isDeviceProvisioned, GlobalActionsPanelPlugin walletPlugin)
private void handleShow()
private ActionsDialog createDialog()
protected void createActionItems()


补丁:
commit d545ddbd31eb876971725e6a2818b44a8fd15a53
Author: dengjiawen <141147155@qq.com>
Date:   Sat Aug 10 14:03:48 2024 +0800

    移除长按POWER健弹出的对话框中的[关机][紧急呼救]选项

diff --git a/frameworks/base/core/res/res/values/config.xml b/frameworks/base/core/res/res/values/config.xml
index c1e3026ee45..f7c5764e0b3 100644
--- a/frameworks/base/core/res/res/values/config.xml
+++ b/frameworks/base/core/res/res/values/config.xml
@@ -2251,7 +2251,7 @@
     <dimen name="config_viewMaxFlingVelocity">8000dp</dimen>
 
     <!-- Amount of time in ms the user needs to press the relevant key to bring up the
-         global actions dialog -->
+         global actions dialog 长按按键时长-->
     <integer name="config_globalActionsKeyTimeout">500</integer>
 
     <!-- Amount of time in ms the user needs to press the relevant keys to trigger the
diff --git a/frameworks/base/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java b/frameworks/base/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
index ff25439a5f9
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邓家文007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值