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

时间:2015-02-12 03:01:48

标签: android encryption device-policy-manager

我正在尝试从我的应用程序中确定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的摩托罗拉Droid Maxx和运行Android 5.0.2的Nexus 7上试用过它)我之前已加密DevicePolicyManager.getStorageEncryptionStatus()始终返回值1,即ENCRYPTION_STATUS_INACTIVE

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

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

方面没有做正确的事情

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

1 个答案:

答案 0 :(得分:5)

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