zoukankan      html  css  js  c++  java
  • Android的SAFE MODE(安全模式)

    android系统,按住MENU键开机,会安全模式进入系统。
    代码位置:

    frameworks/policies/base/phone/com/android/internal/policy/impl/PhoneWindowManager.java

    收索SAFE MODE 这个tag会看到相关代码。
    步骤:在开机动画时,按住MENU键(或者字母S键,方向键的中间键,鼠标左键中的一个)直到开机,会进入安全模式。

    得到log如下:

    I/WindowManager( 101): SAFE MODE ENABLED (menu=1 s=-1 dpad=-1 trackball=-1)

    现象:在机器左小脚显示“安全模式”。

    Android5.1:

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

    public boolean detectSafeMode() {
    if (!mInputMonitor.waitForInputDevicesReady(
    INPUT_DEVICES_READY_FOR_SAFE_MODE_DETECTION_TIMEOUT_MILLIS)) {
    Slog.w(TAG, "Devices still not ready after waiting "
    + INPUT_DEVICES_READY_FOR_SAFE_MODE_DETECTION_TIMEOUT_MILLIS
    + " milliseconds before attempting to detect safe mode.");
    }

    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) {
            mSafeMode = true;
            SystemProperties.set(ShutdownThread.REBOOT_SAFEMODE_PROPERTY, "");
        }
    } catch (IllegalArgumentException e) {
    }
    if (mSafeMode) {
        Log.i(TAG, "SAFE MODE ENABLED (menu=" + menuState + " s=" + sState
                + " dpad=" + dpadState + " trackball=" + trackballState + ")");
    } else {
        Log.i(TAG, "SAFE MODE not enabled");
    }
    mPolicy.setSafeMode(mSafeMode);
    return mSafeMode;
    

    }

    要把safe mode禁止掉,把mSafeMode赋值为false即可。

    养生码农
  • 相关阅读:
    135.002 智能合约设计-——多员工薪酬系统
    131.007 Unsupervised Learning
    131.006 Unsupervised Learning
    131.005 Unsupervised Learning
    135.001 智能合约设计-——单员工薪酬系统
    131.004 监督学习项目 | 为CharityML寻找捐献者
    131.003 数据预处理之Dummy Variable & One-Hot Encoding
    Chromebook 阿里云ECS 配置 jupyter Notebook
    Python之实现迭代器协议
    使用生成器创建新的迭代模式
  • 原文地址:https://www.cnblogs.com/seamoon23/p/11896553.html
Copyright © 2011-2022 走看看