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_SE