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

    养生码农
  • 相关阅读:
    04.Spark的核心组件
    02.Spark 标签生成(Java和Scala的两种实现)
    01.Spark(spark shell实现word count)
    Scala--尾递归--泛型--类型上下限界定--多重界定--视图界定--型变(协变--逆变)--隐式转换--SAM
    01.安装JDK配置环境变量
    Scala模式匹配--样例类--密封样例类--偏函数
    00.Spark--安装Spark
    Scala知识点总结(上半部分)
    01. Java的经典排序--选择排序--冒泡排序--折半查找(二分查找)
    2019-2020学年 20191327《信息安全专业导论》第五周学习总结
  • 原文地址:https://www.cnblogs.com/seamoon23/p/11896553.html
Copyright © 2011-2022 走看看