首页 > 解决方案 > java.lang.IllegalStateException:凭据加密存储中的 SharedPreferences 在用户解锁之前不可用

问题描述

崩溃未在 Google Pixel 设备(OS 9.0-pie)上登录 cashlytics,Playstore 将 ANR&Crashes 报告为 java.lang.IllegalStateException:凭据加密存储中的 SharedPreferences 直到用户解锁后才可用

它在初始化 Fabric.with(this, new Crashlytics()) 时发生,还观察到 IllegalStateException 在设备重新启动时抛出,并且应用程序注册为 LOCKED_BOOT_COMPLETED 和 BOOT_COMPLETED 广播意图

E/AndroidRuntime: FATAL EXCEPTION: main
   Process: com.connect, PID: 2328
   java.lang.RuntimeException: Unable to create application com..common.app.AppApplication: java.lang.IllegalStateException: SharedPreferences in credential encrypted storage are not available until after user is unlocked
       at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5925)
       at android.app.ActivityThread.access$1100(ActivityThread.java:200)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loop(Looper.java:193)
       at android.app.ActivityThread.main(ActivityThread.java:6718)
       at java.lang.reflect.Method.invoke(Native Method)
       at

有没有人遇到过类似的问题。任何人都可以帮助解决这个问题吗?

标签: androidcrashlyticsgoogle-fabricgoogle-pixel

解决方案


我自己没有遇到过这个问题,但这里有一篇文章讨论了支持直接启动模式。

https://developer.android.com/training/articles/direct-boot

这里还有一个来自 Google 的 Github 链接,展示了如何访问设备的加密存储。在 AlarmStorage 类中。

https://github.com/googlesamples/android-DirectBoot/


推荐阅读