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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM