Android10屏蔽安全模式

开发中,有时候不需要安全模式,怎么屏蔽呢,其实不难,找到位置就可以了。在此记录,以防忘记!

一、什么是安全模式
Android在4.0之后也相应加入了安全模式,在该模式下,只加载系统必要程序,系统之外的第三方程序或文件统统不会启动。

二、安全模式有什么用?

设备在日常使用过程中,不可避免的会添加安装第三方应用。但并不是每一个应用都是安全的,对系统无伤害的。由于第三方应用程序,可能会存在一定的兼容性问题,所以在安装软件后可能会出现系统文件报错,甚至手机无法正常开机或者开机后系统程序不停报错的现象。遇到这种情况,若进行恢复出厂设置,手机中的资料是无法进行备份的,但是Android系统中添加了"安全模式"这项功能,有效的避免上述情况同时来排除故障。

三、如何进入安全模式?
进入到安全模式的方法一般有两种:扫描按键和系统重启到安全模式。

扫描按键:按照Android原生逻辑,这里针对不同设备会扫描5个按键:菜单键、s键、dpad中间键、轨迹球以及音量减键,其中有任何一个按键按下,就会进入到安全模式。

系统重启到安全模式:正常模式下长按power键,在弹出power off中长按OK键,在弹出的"Reboot to safe mode"框中按确定键,设备重启后即进入安全模式。

四安全模式的源码位置:

源码路径:framework/base/services/core/java/com/android/server/wm/WindowManagerService.java

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

        if (Settings.Global.getInt(
                mContext.getContentResolver(), Settings.Global.SAFE_BOOT_DISALLOWED, 0) != 0) {
            return false;
        }

        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;
            Slog.e(TAG_WM, "menuState:" + menuState +",sState:" + sState+",dpadState:"
                   + dpadState +",trackballState:" + trackballState+",volumeDownState:" + volumeDownState);
             Slog.e(TAG_WM, "mSafeMode:" + mSafeMode);
        try {
            if (SystemProperties.getInt(ShutdownThread.REBOOT_SAFEMODE_PROPERTY, 0) != 0
                    || SystemProperties.getInt(ShutdownThread.RO_SAFEMODE_PROPERTY, 0) != 0) {
                mSafeMode = true;
             Slog.e(TAG_WM, "mSafeMode try setting:" + mSafeMode);
                SystemProperties.set(ShutdownThread.REBOOT_SAFEMODE_PROPERTY, "");
            }
        } catch (IllegalArgumentException e) {
        }
        if (mSafeMode) {
            Log.i(TAG_WM, "SAFE MODE ENABLED (menu=" + menuState + " s=" + sState
                    + " dpad=" + dpadState + " trackball=" + trackballState + ")");
            // May already be set if (for instance) this process has crashed
            if (SystemProperties.getInt(ShutdownThread.RO_SAFEMODE_PROPERTY, 0) == 0) {
                SystemProperties.set(ShutdownThread.RO_SAFEMODE_PROPERTY, "1");
            }
        } else {
            Log.i(TAG_WM, "SAFE MODE not enabled");
        }
        Log.i(TAG_WM, "SAFE MODE current result is:" + mSafeMode);
        mPolicy.setSafeMode(mSafeMode);
       + mSafeMode = false;
        Log.i(TAG_WM, "SAFE MODE last result is:" + mSafeMode);
        return mSafeMode;
    }

  看以上方法中,返回值,将其设置为false,就可以了。 是不是很简单!!!

参考文章:android安全模式

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值