去掉长按遥控器power键后提示关机、飞行模式的弹窗

首先找到对应长短按power键的位置:

frameworks\base\policy\src\com\android\internal\policy\impl\PhoneWindowManager.java

java 复制代码
private final Runnable mPowerLongPress = new Runnable() {
        @Override
        public void run() {
            // The context isn't read
            if (mLongPressOnPowerBehavior < 0) {
                mLongPressOnPowerBehavior = mContext.getResources().getInteger(
                        com.android.internal.R.integer.config_longPressOnPowerBehavior);
            }
            int resolvedBehavior = mLongPressOnPowerBehavior;
            if (FactoryTest.isLongPressOnPowerOffEnabled()) {
                resolvedBehavior = LONG_PRESS_POWER_SHUT_OFF_NO_CONFIRM;
            }
            switch (resolvedBehavior) {
            case LONG_PRESS_POWER_NOTHING:
                break;
            case LONG_PRESS_POWER_GLOBAL_ACTIONS:
                mPowerKeyHandled = true;
                //<!-- $_rbox_$_modify_$_huangjc -->
                if("true".equals(SystemProperties.get("persist.sys.realsleep"))){
                   showSleepDialog();
                } else {
                if (!performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false)) {
                    performAuditoryFeedbackForAccessibilityIfNeed();
                }
                sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS);
                showGlobalActionsDialog();
                }
                break;
            case LONG_PRESS_POWER_SHUT_OFF:
            case LONG_PRESS_POWER_SHUT_OFF_NO_CONFIRM:
                mPowerKeyHandled = true;
                performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false);
                sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS);
                mWindowManagerFuncs.shutdown(resolvedBehavior == LONG_PRESS_POWER_SHUT_OFF);
                break;
            }
        }
    };

其中case LONG_PRESS_POWER_GLOBAL_ACTIONS: 对应的是长按, 而调用的方法showGlobalActionsDialog()就是处理弹窗的方法;

java 复制代码
   void showGlobalActionsDialog() {
        if (mGlobalActions == null) {
            mGlobalActions = new GlobalActions(mContext, mWindowManagerFuncs);
        }
        final boolean keyguardShowing = keyguardIsShowingTq();
        mGlobalActions.showDialog(keyguardShowing, isDeviceProvisioned());
        if (keyguardShowing) {
            // since it took two seconds of long press to bring this up,
            // poke the wake lock so they have some time to see the dialog.
            mPowerManager.userActivity(SystemClock.uptimeMillis(), false);
        }
    }

所以去掉showGlobalActionsDialog();就不会再有弹窗出现了;

如果要做短按power键使系统直接关机的这个功能,那么只需要在PhoneWindowManager.java中找到短按处理的代码,然后添加mWindowManagerFuncs.shutdown(true);就可以了。

相关推荐
ImTryCatchException21 分钟前
Android 画中画(PiP)小窗播放:怎么做、以及它到底是怎么工作的
android·pip
flower_drop10 小时前
基于 WebUSB 与 CDP:在浏览器端实现 Android 设备通信与无证书抓包实践
android·chrome·测试工具·adb·bug·edge浏览器
撩得Android一次心动12 小时前
Jetpack Compose 知识点整理1【个人用】
android·学习·kotlin·android jetpack·compose
ForteScarlet13 小时前
Kotlin 2.4.20 现已发布,新特性多不多?
android·java·开发语言·开源·kotlin·jetbrains
方白羽15 小时前
Android Studio 自动国际化插件:SmartI18n
android·android studio·intellij idea
码农coding17 小时前
android12 状态栏图标的加载流程
android
hai_android18 小时前
Kotlin 协程作用域源码剖析
android·kotlin
Yeyu18 小时前
Android 画中画(PiP)小窗播放:怎么做、以及它到底是怎么工作的
android
千里马学框架19 小时前
安卓系统性能优化高级实战开发专题--开机,app冷启动优化
android·智能手机·性能优化·framework·性能·开机优化·app冷启动优化
律宏阔19 小时前
Android 手机通过 adblib 使用 ADB Wi-Fi 控制 Android 9 开发板
android