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即可。

    养生码农
  • 相关阅读:
    css水平垂直居中
    JavaScript提供了哪几种“异步模式”?
    sort()
    后端开发中,可以在Cache-Control设置的常用指令
    纯函数
    react和vue
    npm(classnames) 更灵活使用类名
    shell知多少?
    常见的HTTP状态码
    axios
  • 原文地址:https://www.cnblogs.com/seamoon23/p/11896553.html
Copyright © 2011-2022 走看看