我正在尝试从我的应用程序中确定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
。
Settings > Security
页面检查了其状态)。
这个功能坏了吗?在SO或其他网络资源上似乎没有任何提及。这让我相信我在DevicePolicyManager
。
更新使用摩托罗拉设备再次执行加密步骤后,DevicePolicyManager.getStorageEncryptionStatus()
将返回正确的值,但它仍然在Nexus 7上失败。
答案 0 :(得分:5)
我刚遇到同样的问题并发现它正在发生,因为该设备已启用磁盘加密,但不需要在启动时输入密码。更改密码并强制启动时需要的PIN选项为true DevicePolicyManager.getStorageEncryptionStatus()
正确返回ENCRYPTION_STATUS_ACTIVE
。