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

    养生码农
  • 相关阅读:
    曾国藩家书人但有恒、事无不成
    pythonredis
    tableSorter使用介绍
    Python模块学习 subprocess 创建子进程
    曾国藩家书用人必先知人
    身份证号码的规则及验证原理
    KeyDown,KeyPress 和KeyUp 之我谈(更新版本)
    Python基础综合练习
    熟悉常用的Linux操作
    大数据概述
  • 原文地址:https://www.cnblogs.com/seamoon23/p/11896553.html
Copyright © 2011-2022 走看看