android安全模式
来源:互联网 发布:简单便宜的手表知乎 编辑:程序博客网 时间:2024/05/09 11:41
Android
安全模式的分析
手机安装第三方软件后,有一定的概率出现软件与系统不兼容的情况,例如,系统文件操作,手机无法正常开机或开机或系统程序不停报错的现象.遇到此类现象,可重启,使手机进入安全模式.
手机在安全模式下,系统仅会加载维持系统基本功能运行的部分程序不会启动第三方的软件,同时可以通过此方法测试手机基本功能是否正常使用,且删除最近安装的第三方软件来排除某些不兼容的情况.
安全模式的特点
(1)任何第三方应用程序都不会自动启动,只有系统应用程序可以执行
(2)手机左下角会出现"安全模式"字样
(3)在安全模式下,用户可以接触安装有问题的应用程序
(4)安全模式下不会损坏任何应用程序和个人数据
进入安全模式的条件
frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
2254 public boolean detectSafeMode() {
2255 try {
2256 int menuState = mWindowManager.getKeycodeState(KeyEvent.KEYCODE_MENU);
2257 int sState = mWindowManager.getKeycodeState(KeyEvent.KEYCODE_S);
2258 int dpadState = mWindowManager.getDPadKeycodeState(KeyEvent.KEYCODE_DPAD_CENTER);
2259 int trackballState = mWindowManager.getTrackballScancodeState(BTN_MOUSE);
2260 mSafeMode = menuState > 0 || sState > 0 || dpadState > 0 || trackballState > 0;
2261 performHapticFeedbackLw(null, mSafeMode
2262 ? HapticFeedbackConstants.SAFE_MODE_ENABLED
2263 : HapticFeedbackConstants.SAFE_MODE_DISABLED, true);
2264 if (mSafeMode) {
2265 Log.i(TAG, "SAFE MODE ENABLED (menu=" + menuState + " s=" + sState
2266 + " dpad=" + dpadState + " trackball=" + trackballState + ")");
2267 } else {
2268 Log.i(TAG, "SAFE MODE not enabled");
2269 }
2270 return mSafeMode;
2271 } catch (RemoteException e) {
2272 // Doom! (it's also local)
2273 throw new RuntimeException("window manager dead");
2274 }
2275 }
menu键,全键盘的s键,DPAD_CENTER,轨迹球按键。
SystemServer 会在启动过程中,启动所有服务,然后检测是否是安全模式,如果是则通知
ActivityManagerService进入安全模式,ActivityManagerService又通知PackageManagerService进入安全模式,然后在左下角显示一个“安全模式”的文字。PackageManagerService进入安全模式,仅仅是设置了mSafeMode这个局部变量。
安全模式对PackageManagerService的影响:
在获得Persistent应用的时候如果是安全模式,则只返回SystemApp。
在解析ContentProvider的时候,如果是安全模式,只有制定的provider是系统自带的才能解析。
总的来说,如果PackageManagerService处于安全模式下,只有ApplicationInfo.FLAG_SYSTEM的组件才会返回。
设置了persistent标志的应用会在ActivityManagerService执行systemReady的时候,由AM来启动。
如果进入了安全模式,即使设置类persistent标志的第三方应用也不会启动。
launcher
在加载桌面的时候,会通过AMS来获得判断是否是SafeMode。
安全模式对广播的影响,AMS最终会通过PM来获得广播的接收着,
AppGlobals.getPackageManager().queryIntentReceivers
mReceivers.queryIntent() mReceivers的类型是
ActivityIntentResolver 这个类在解析
receivers的最后,会调用
newResult,这个函数会判断安全模式下,如果不是系统的应用,会排除在外。
总结:
安全模式下,所有的第三方应用服务,不会自动运行,也不会收到广播。如果明确指定第三方的component
name 还是可以运行的。
安全模式的分析
手机安装第三方软件后,有一定的概率出现软件与系统不兼容的情况,例如,系统文件操作,手机无法正常开机或开机或系统程序不停报错的现象.遇到此类现象,可重启,使手机进入安全模式.
手机在安全模式下,系统仅会加载维持系统基本功能运行的部分程序不会启动第三方的软件,同时可以通过此方法测试手机基本功能是否正常使用,且删除最近安装的第三方软件来排除某些不兼容的情况.
安全模式的特点
(1)任何第三方应用程序都不会自动启动,只有系统应用程序可以执行
(2)手机左下角会出现"安全模式"字样
(3)在安全模式下,用户可以接触安装有问题的应用程序
(4)安全模式下不会损坏任何应用程序和个人数据
进入安全模式的条件
frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
2254 public boolean detectSafeMode() {
2255 try {
2256 int menuState = mWindowManager.getKeycodeState(KeyEvent.KEYCODE_MENU);
2257 int sState = mWindowManager.getKeycodeState(KeyEvent.KEYCODE_S);
2258 int dpadState = mWindowManager.getDPadKeycodeState(KeyEvent.KEYCODE_DPAD_CENTER);
2259 int trackballState = mWindowManager.getTrackballScancodeState(BTN_MOUSE);
2260 mSafeMode = menuState > 0 || sState > 0 || dpadState > 0 || trackballState > 0;
2261 performHapticFeedbackLw(null, mSafeMode
2262 ? HapticFeedbackConstants.SAFE_MODE_ENABLED
2263 : HapticFeedbackConstants.SAFE_MODE_DISABLED, true);
2264 if (mSafeMode) {
2265 Log.i(TAG, "SAFE MODE ENABLED (menu=" + menuState + " s=" + sState
2266 + " dpad=" + dpadState + " trackball=" + trackballState + ")");
2267 } else {
2268 Log.i(TAG, "SAFE MODE not enabled");
2269 }
2270 return mSafeMode;
2271 } catch (RemoteException e) {
2272 // Doom! (it's also local)
2273 throw new RuntimeException("window manager dead");
2274 }
2275 }
menu键,全键盘的s键,DPAD_CENTER,轨迹球按键。
SystemServer 会在启动过程中,启动所有服务,然后检测是否是安全模式,如果是则通知
ActivityManagerService进入安全模式,ActivityManagerService又通知PackageManagerService进入安全模式,然后在左下角显示一个“安全模式”的文字。PackageManagerService进入安全模式,仅仅是设置了mSafeMode这个局部变量。
安全模式对PackageManagerService的影响:
在获得Persistent应用的时候如果是安全模式,则只返回SystemApp。
在解析ContentProvider的时候,如果是安全模式,只有制定的provider是系统自带的才能解析。
总的来说,如果PackageManagerService处于安全模式下,只有ApplicationInfo.FLAG_SYSTEM的组件才会返回。
设置了persistent标志的应用会在ActivityManagerService执行systemReady的时候,由AM来启动。
如果进入了安全模式,即使设置类persistent标志的第三方应用也不会启动。
launcher
在加载桌面的时候,会通过AMS来获得判断是否是SafeMode。
安全模式对广播的影响,AMS最终会通过PM来获得广播的接收着,
AppGlobals.getPackageManager().queryIntentReceivers
mReceivers.queryIntent() mReceivers的类型是
ActivityIntentResolver 这个类在解析
receivers的最后,会调用
newResult,这个函数会判断安全模式下,如果不是系统的应用,会排除在外。
总结:
安全模式下,所有的第三方应用服务,不会自动运行,也不会收到广播。如果明确指定第三方的component
name 还是可以运行的。
0 0
- android安全模式
- Android安全模式
- android 4.2 去掉安全模式
- android 4.0 安全模式分析
- android 安全模式意义? 如何启动安全模式? 如何屏蔽安全模式?
- android的SAFE MODE(安全模式)
- android 手机一直进安全模式 解决方法
- 将 Android 设备启动至安全模式
- android:屏蔽按键进入安全模式
- 开启 Android WebView 的安全浏览模式
- 安全模式
- android安全
- android 安全
- android安全
- android安全
- Android 安全
- android安全
- 安全模式和普通模式
- shell用变量的值作为新的变量名
- 嵌入式开发需要的不仅仅是处理器
- apache+php+mysql+wordpress搭建本地wordpress(windows)
- 一个界面,定义两个button,切换界面
- jquery树形 点击标题展开关闭
- android安全模式
- 自编ERP类网站通用权限系统
- Java实现文件日志功能
- How to Install PostgreSQL 9.5 on CentOS/RHEL 7/6/5 and Fedora 23/22
- c++ 中怎么传递可变参数
- Struts2框架与servlet共存问题
- java double 计算损失精度
- 如何提高自己的设计水平(三)
- git-svn 'path probably does not exist' 错误