RK3568 Android11 去除长按power键弹框的emergency按键


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弹出关机对话框去掉屏幕截图和紧急呼救功能 ↩︎

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值