是我,还是 DevicePolicyManager.getStorageEncryptionStatus() 坏了?

Is it me, or is DevicePolicyManager.getStorageEncryptionStatus() broken?

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

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

问题来了:当我在设备上 运行 这段代码时(我已经在 Motorola Droid Maxx 运行ning Android 4.4.4 和 Nexus 7 上试过了运行ning Android 5.0.2) 我之前加密过, DevicePolicyManager.getStorageEncryptionStatus()always return 值为 1,即 ENCRYPTION_STATUS_INACTIVE

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

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

方面没有做正确的事情

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

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