Android DirectBoot模式
DirectBoot(简称DB)是Android N新引入的一个特性,本质上是对数据访问做了限制。在用户开机但未解锁之前,应用只能访问这个安全区内的数据,从而保护用户隐私安全。
Android N上把数据分成了两块,分别是:
1、凭据保护存储区(credential-protected),这是所有应用的默认存储位置,仅在用户解锁设备后可用。
2、设备保护存储区(device-protected),这是一个新的存储位置,当设备启动后(包括DB阶段)随时都可访问该位置.
由于在DB模式下,用户没有办法访问到凭据保护保护存储区,所以在这个时刻访问sharedPreference时会报错,所以需要在DB模式下访问sharedPreference时需要增加判断,以免程序崩溃。
判断设备当前是否在DB模式:
public static boolean isDirectBootMode(Context context) {
boolean enabled = false;
DevicePolicyManager devicePolicyManager = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
if (devicePolicyManager != null) {
try{enabled=devicePolicyManager.getStorageEncryptionStatus()==DevicePolicyManager.ENCRYPTION_STATUS_ACTIVE_PER_USER;
} catch (IllegalStateException e) {
}
}
return enabled;
}
如果在DB模式下访问sharedPreference需要做如下处理:
if (StateUtils.isDirectBootMode(context)) {
final Context deviceContext = context.createDeviceProtectedStorageContext();
context=deviceContext //将context替换调再访问
} else {
//todo
}
要使app在Direct Boot模式下能运行,除了在Manifest里进行的显示声明外(android:directBootAware=”true”),需要将在Direct Boot模式下运行时涉及的数据存储到Device protected storage,注意只应该将能使app在Direct Boot模式下运行必须的数据存放在Device protected storage,其他的一些用户敏感数据应该放在Credential protected storage,要访问Device protected storage,需要在使用所有文件相关的API时,用以下的Context(
context.createDeviceProtectedStorageContext()),可以使用moveSharedPreferencesFrom() 和Context.moveDatabaseFrom() 对原来的数据进行转存.
Android DirectBoot模式相关推荐
- Android DirectBoot模式及其数据存储
支持"Direct boot"模式 当设备已开机但用户尚未解锁设备时,Android 7.0 将在安全的"直接启动"模式下运行.为支持此模式,系统为数据提供了两 ...
- android Run模式也会出现Waiting for debugger的解决方法
android Run模式也会出现"Waiting for debugger"的解决方法 出现"waiting for debugger"窗口是在debug模式 ...
- Android MVP模式 简单易懂的介绍方式
主要学习这位大神的博客:简而易懂 Android MVP模式 简单易懂的介绍方式 https://segmentfault.com/a/1190000003927200 转载于:https://www ...
- android eng 模式,android 4.0 编译模式 eng - user 时遇到的有关问题
android 4.0 编译模式 eng -- > user 时遇到的问题 关键词:android 4.0 user eng camera nand 串口 平台信息: 内核:linu ...
- android返回后屏幕旋转了,Android recovery 模式下屏幕显示旋转
Android recovery 模式下屏幕显示旋转 大家在网上搜索 Android屏幕旋转,成千上万的文章,但是没有几个是写recovery 模式的.难道你们只旋转正常模式下的屏幕方向,不管reco ...
- android doze模式源码分析,Android Doze模式启用和恢复详解
从Android 6.0(API level 23)开始,Android提出了两个延长电池使用时间的省电特性给用户.用户管理可以在没有充电的情况下管理app的行为.当用户一段时间没有使用手机的时候,D ...
- Android MVC模式
Android MVC模式 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/51172105 前些天看到 ...
- android mvp模式
越来越多人讨论mvp模式,mvp在android应用开发中获得更多的重视,这里说一下对MVP的简单了解. 什么是 MVP? MVP模式使逻辑从视图层分开,目的是我们在屏幕上怎么表现,和界面如何工作的所 ...
- Android MVP模式简单易懂的介绍方式 (一)
Android MVP模式简单易懂的介绍方式 (一) Android MVP模式简单易懂的介绍方式 (二) Android MVP模式简单易懂的介绍方式 (三) 最近正在研究Android的MVP模式 ...
最新文章
- Error:Execution failed for task ':myapp:dexDebug'. com.android.ide.common.process.ProcessExcepti
- 字符串 mysql索引,长字符串的MySQL索引
- C++中substr函数的用法
- git push时提示:更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支
- 全球及中国现金自动化(管理)行业运作模式与前景趋势展望报告2022版
- spring的父子容器
- Java的并发编程中的多线程问题到底是怎么回事儿?
- CSS 中 的 margin、border、padding 区别 (内边距、外边距)
- 解决Bug:windows无法休眠/休眠只关闭屏幕
- LDC 1.14.0 发布,高性能 dlang 编译器
- 外贸Newer必备外贸流程
- python小游戏之外星人入侵之pygame实战应用(含源码下载)
- java 传感器_JAVA串口采集传感器数据
- 神经网络模型结果怎么看,神经网络模型怎么评估
- violate关键字的理解
- JAVA jdk8安装
- 写给湘大计算机相关专业的学弟学妹们
- 轻松通关以太坊--初识以太坊
- H5页面屏蔽用户长按复制黏贴
- MATLAB同时录音播放,用matlab录音和放音