当前位置: 首页 > article >正文

Android 屏蔽安全模式+去掉系统安全模式(SAFE MODE)

去除:进入 alps\frameworks\base\core\res\res\values\config.xml

 <string-array translatable="false" name="config_defaultFirstUserRestrictions">
    + <item>no_safe_boot</item>
    </string-array>

frameworks/base/services/core/java/com/android/server/power/ShutdownThread.java

    public static void rebootSafeMode(final Context context, boolean confirm) {
        UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE);
        if (um.hasUserRestriction(UserManager.DISALLOW_SAFE_BOOT)) {
            return;
        }

        mReboot = true;
        mRebootSafeMode = false;//true
        mRebootHasProgressBar = false;
        mReason = null;
        shutdownInner(context, confirm);
    }

/frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java

public boolean detectSafeMode() {
        if (!mInputManagerCallback.waitForInputDevicesReady(
                INPUT_DEVICES_READY_FOR_SAFE_MODE_DETECTION_TIMEOUT_MILLIS)) {
            ProtoLog.w(WM_ERROR, "Devices still not ready after waiting %d"
                            + " milliseconds before attempting to detect safe mode.",
                    INPUT_DEVICES_READY_FOR_SAFE_MODE_DETECTION_TIMEOUT_MILLIS);
        }

        if (Settings.Global.getInt(
                mContext.getContentResolver(), Settings.Global.SAFE_BOOT_DISALLOWED, 0) != 0) {
            return false;
        }

        int menuState = mInputManager.getKeyCodeState(-1, InputDevice.SOURCE_ANY,
                KeyEvent.KEYCODE_MENU);
        int sState = mInputManager.getKeyCodeState(-1, InputDevice.SOURCE_ANY, KeyEvent.KEYCODE_S);
        int dpadState = mInputManager.getKeyCodeState(-1, InputDevice.SOURCE_DPAD,
                KeyEvent.KEYCODE_DPAD_CENTER);
        int trackballState = mInputManager.getScanCodeState(-1, InputDevice.SOURCE_TRACKBALL,
                InputManagerService.BTN_MOUSE);
        int volumeDownState = mInputManager.getKeyCodeState(-1, InputDevice.SOURCE_ANY,
                KeyEvent.KEYCODE_VOLUME_DOWN);
        mSafeMode = menuState > 0 || sState > 0 || dpadState > 0 || trackballState > 0
                || volumeDownState > 0;
        try {
            if (SystemProperties.getInt(ShutdownThread.REBOOT_SAFEMODE_PROPERTY, 0) != 0
                    || SystemProperties.getInt(ShutdownThread.RO_SAFEMODE_PROPERTY, 0) != 0) {
                mSafeMode = true;
                SystemProperties.set(ShutdownThread.REBOOT_SAFEMODE_PROPERTY, "");
            }
        } catch (IllegalArgumentException e) {
        }
        if (mSafeMode) {
            // May already be set if (for instance) this process has crashed
            if (SystemProperties.getInt(ShutdownThread.RO_SAFEMODE_PROPERTY, 0) == 0) {
                SystemProperties.set(ShutdownThread.RO_SAFEMODE_PROPERTY, "1");
            }
        } else {
            ProtoLog.i(WM_ERROR, "SAFE MODE not enabled");
        }
        mPolicy.setSafeMode(mSafeMode);
        return false;//mSafeMode
    }


http://www.kler.cn/a/429966.html

相关文章:

  • CSS鼠标悬浮及其样式
  • Win10本地部署大语言模型ChatGLM2-6B
  • 计算机毕业设计Python机器学习农作物健康识别系统 人工智能 图像识别 机器学习 大数据毕业设计 算法
  • 在ubuntu上如何使用sdkman安装两个版本的java并进行管理和维护
  • RabbitMQ基本介绍及简单上手
  • 图像处理|腐蚀操作
  • Orleans使用KafkaStream
  • SQL,根据数据的时间跨度进行不同粒度的统计
  • JavaScript 单例模式的创建与应用
  • 调度系统:DonpinScheduler 执行 Couchbase SQL 脚本的实际例子
  • 公共服务 kkFileView 4.1 文件预览 Docker 一键部署
  • 实现 DataGridView 下拉列表功能(C# WinForms)
  • 【C#】Task.Delay与Thread.Sleep
  • WPF 本地生成验证码
  • mysql 架构详解
  • 【元素操作】鼠标 -ActionChains
  • SWIRL:有望成为2025年顶级AI搜索引擎
  • 《蓝桥杯比赛规划》
  • 第七节(2)、T型加减速优化处理【51单片机-TB6600驱动器-步进电机教程】
  • NVR管理平台EasyNVR:EasyNTS上云网关无法启动且报错404如何解决?
  • 区块链钱包开发:全面功能设计方案解析
  • linux之less
  • docker-常用应用部署dockerfile模板
  • 数据库优化、sql优化
  • 奇异值分解推导——把任意n维度矢量,从vi基分量对应映射到ui基分量。所以分解后,V转置是提取矢量中属于V的列的分量。
  • 磁盘阵列服务器和普通服务器的区别