【问题标题】:Direct boot mode enabled app is crashing after implementing WorkManager?启用 WorkManager 后,启用直接启动模式的应用程序崩溃?
【发布时间】:2020-01-24 09:46:16
【问题描述】:

由于后台服务限制,我们在WorkManager 的帮助下实现了我们的应用程序,并替换了AsyncTask。该应用程序支持直接启动模式,因此我们将所需的SharedPreferences 存储在设备加密存储中。应用在 WorkManager 实施之前运行良好,但现在在重启设备后崩溃。 日志猫:

java.lang.IllegalStateException: SharedPreferences in credential encrypted storage are not available until after user is unlocked
        at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:387)
        at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:372)
        at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:167)
        at androidx.work.impl.utils.Preferences.getSharedPreferences(Unknown Source:12)
        at androidx.work.impl.utils.Preferences.needsReschedule(Unknown Source:0)
                                                setNeedsReschedule
        at androidx.work.impl.utils.ForceStopRunnable.shouldRescheduleWorkers(Unknown Source:6)
        at androidx.work.impl.utils.ForceStopRunnable.run(Unknown Source:18)
        at androidx.work.impl.utils.SerialExecutor$Task.run(Unknown Source:2)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
        at java.lang.Thread.run(Thread.java:764)

我们在初始化 WorkManager 时提供设备保护的存储上下文: ContextCompat.createDeviceProtectedStorageContext(appContext); 请帮忙,如何处理。

【问题讨论】:

    标签: android sharedpreferences android-workmanager android-storage


    【解决方案1】:

    这与 - java.lang.IllegalStateException: SharedPreferences in credential encrypted storage are not available until after user is unlocked 是同一个问题

    如果您看到堆栈跟踪,它会说,sharedpreferences 是凭据加密的,这意味着它在用户解锁设备并且您提供的上下文用于设备加密存储之前将无法工作。

    要解决此问题,您需要使用设备加密存储而不是凭据加密存储。

    在此处查看文档 - https://developer.android.com/training/articles/direct-boot

    【讨论】:

    • 用于访问 sharedPreferences 我只使用设备加密存储。我确定工作经理在内部做某事。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    相关资源
    最近更新 更多