版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/yanwenyuan0304/article/details/101065027


报错

java.lang.IllegalStateException: SharedPreferences in credential encrypted storage are not available until after user is unlocked

一、问题场景

这两处报错是我在开发一个apk需要开机未解锁前运行报的错,
在Android 7.0以后如果要在开机未解锁前启动一个应用需要加上

  1. <activity|provider|receiver|service ...
  2. android:directBootAware=”true”>

具体看官网:https://developer.android.com/training/articles/direct-boot?hl=zh-cn
这里我是加在application

  1. <application
  2. android:directBootAware="true"

二、问题原因

虽然加上android:directBootAware="true"可以启动了但是不能访问SharedPreferences等数据

三、解决方案

再加上该属性:android:defaultToDeviceProtectedStorage="true" 如下例子:

  1. android:directBootAware="true"
  2. android:defaultToDeviceProtectedStorage="true"