【问题标题】:Is it me, or is DevicePolicyManager.getStorageEncryptionStatus() broken?是我,还是 DevicePolicyManager.getStorageEncryptionStatus() 坏了?
【发布时间】:2015-02-12 03:01:47
【问题描述】:

我正在尝试从我的应用程序中确定我的 Android 设备的存储加密状态。按照相关Android Developer page的建议,这是我的代码:

DevicePolicyManager mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
int encryptionStatus = mDPM.getStorageEncryptionStatus();
if (DEBUG) Log.v(TAG, "checkSecuritySettingsSufficient: encryptionStatus=" + encryptionStatus);

问题来了:当我在设备上运行此代码时(我在运行 Android 4.4.4 的 Motorola Droid Maxx 和运行 Android 5.0.2 的 Nexus 7 上尝试过)我之前已加密、DevicePolicyManager.getStorageEncryptionStatus() 将始终返回值 1,即 ENCRYPTION_STATUS_INACTIVE。

因此,Android 报告该设备未加密,尽管文件系统确实已加密(我从 Settings > Security 页面检查了它的状态)。

这个功能坏了吗? SO或其他网络资源上似乎没有提到这一点。这让我相信我没有正确处理DevicePolicyManager。

更新在使用摩托罗拉设备再次运行加密步骤后,DevicePolicyManager.getStorageEncryptionStatus() 正在返回正确的值,但在 Nexus 7 上仍然失败。

【问题讨论】:

    标签: android encryption device-policy-manager


    【解决方案1】:

    我刚刚遇到了同样的问题,发现它正在发生,因为设备启用了磁盘加密,但不需要在启动时输入密码。更改密码并强制启动时需要 PIN 选项为真,使 DevicePolicyManager.getStorageEncryptionStatus() 正确返回 ENCRYPTION_STATUS_ACTIVE。

    【讨论】:

    • 是的,显然是这样。根据我们的经验,getStorageEncryptionStatus 也会返回 ENCRYPTION_STATUS_INACTIVE,除非 both 加密已启用并且需要 PIN 码。这似乎是错误的,但这是我们必须解决的问题。
    • 加密开启但没有 Pin 用于启动 nexus 6 返回 ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEY 但带有 Android 6 的 Galaxy S7 返回 ENCRYPTION_STATUS_ACTIVE
    猜你喜欢
    • 2011-07-21
    • 2022-09-30
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    相关资源
    最近更新 更多