admin管理员组

文章数量:1577511

目录

    • 需求
    • 解法
    • 简析
    • 结果
    • 参考

Platform: RK3568
OS: Android 11
SDK Version:android-11.0-mid-rkr11.2


需求

Android11长按power键弹出的关机对话框默认是有3个按键:Emergency(紧急呼救),Power off(关机),Restart(重启),如下所示:

客户要求去除Emergency这个按键。

解法

在frameworks/base/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java 中的createActionItems()方法中屏蔽Emergency的action

diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
index ff25439a5f9f..effbc1b56139 100644
--- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
@@ -608,8 +608,9 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
 
         // make sure emergency affordance action is first, if needed
         if (mEmergencyAffordanceManager.needsEmergencyAffordance()) {
-            addIfShouldShowAction(tempActions, new EmergencyAffordanceAction());
-            addedKeys.add(GLOBAL_ACTION_KEY_EMERGENCY);
+            /*addIfShouldShowAction(tempActions, new EmergencyAffordanceAction());
+            addedKeys.add(GLOBAL_ACTION_KEY_EMERGENCY);*/
         }
 
         for (int i = 0; i < defaultActions.length; i++) {
@@ -655,7 +656,8 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
                     addIfShouldShowAction(tempActions, new LogoutAction());
                 }
             } else if (GLOBAL_ACTION_KEY_EMERGENCY.equals(actionKey)) {
-                addIfShouldShowAction(tempActions, new EmergencyDialerAction());
+                //addIfShouldShowAction(tempActions, new EmergencyDialerAction());
             } else {
                 Log.e(TAG, "Invalid global action key " + actionKey);
             }

简析

之前在Android12上是有设置过长按power键的弹框功能的1,所以一开始也是想去config.xml里面找找有没有相关的属性配置,但是客户说已经参考了网上类似的方法2但没有效果。再继续查找资料,发现这篇文章3分析的比较细致,指出关机对话框的最终实现是在GlobalActionsDialog.java 中。而这篇文章4则直接点明了修改方案,我这边就不原文搬运了,自己简单捋一捋其中几个关键方法:

  • showOrHideDialog()根据当前状态显示/隐藏对话框
  • handleShow()显示对话框
  • createDialog() 用于创建新的对话框
  • createActionItems()添加各种按键action事件

因此如果想要增减/修改关机对话框的按键都可以在createActionItems()方法中进行操作。

结果

修改后效果如下


欢迎留言讨论,感谢阅读~

参考


  1. RK3568 Android12 长按power键功能设置 ↩︎

  2. Android10.0去掉长按电源键弹出框中的紧急呼救按钮 ↩︎

  3. 全网最详细的Android11.0长按power键关机流程分析 ↩︎

  4. android 9.0 10.0 长按Power弹出关机对话框去掉屏幕截图和紧急呼救功能 ↩︎

本文标签: 按键powerEmergency键弹框