一些背景知识:我开发的一个应用程序使用了HCE(主机卡仿真)——当设备靠近定制硬件时,系统会创建并启动HostApduService的实现。开始时,它从SharedPreferences读取一些信息,并相应地处理与定制硬件的通信。到目前为止,还不错。
在某种程度上,我注意到奇怪的崩溃聚集在googleplayvitals中-事实证明,从android8.1开始
ContextImpl
在尝试读取共享首选项之前,检查用户是否已授权;如果没有,则引发异常。这就是我如何了解直接引导的含义。
关于直接引导模式的文档提到凭证存储加密禁止任何人访问数据
直到用户提供了一些授权
但是,一些应用程序的用户声称,有时设备硬件通信无法工作,即使他们很长时间没有重新启动设备。解决这个问题的唯一方法就是对设备进行自动验证——输入pin码、触摸指纹扫描仪等。
所以这让我想知道,这部分加密是如何工作的,有没有可能有些供应商会更改此功能的实现,以便有时在设备处于锁定状态一个小时左右之后,它才会启动?我能理解打开设备屏幕以使NFC开始工作的必要性——关于NFC的文档提到,出于安全原因,当屏幕关闭时,NFC会进入睡眠状态。但为什么这需要解锁设备呢?或者这不是关于供应商本身,我的理解是完全错误的?
升级版。
我有一个广播接收器,当设备重新启动时,它会唤醒应用程序——我需要在这里做一些工作,这部分工作包括从中读取数据
SharedPreferences
. 在我改变了那个广播接收器的动作过滤器之后,它就启动了
之后
用户实际上已经授权了自己,绝大多数崩溃都与试图读取的内容有关
共享优先权
虽然处于加密状态的状态已经不复存在,但其中的一小部分(比如之前崩溃数量的0.1%)仍然存在。
在这一点上,我确信它必须连接到设备跳回加密状态,但是
-
-
对于潜在的原因是什么以及如何处理这些问题,有什么想法吗?
直接引导模式文档现在包含以下语句:
所以基本上手机不应该在屏幕锁定后进入加密状态,它应该只发生在重启之后和授权之前。