由于支持 Android 3.0 全盘加密,但我看不到该功能的任何 API。我需要知道的两件事是:
- 设备是否加密?
- 使用什么加密方式。
我找到了 process here 的低级解释并且它似乎暗示使用的加密是 128 AES with CBC 和 ESSIV:SHA256,但它没有谈论一种方法来查找设备是否已加密。
那么,我的应用程序是否可以查询设备是否正在使用全盘加密功能,或者我是否需要求助于 Runtime.exec 调用等骇人听闻的解决方案?
最佳答案
正如@Mikle 提到的,您只需调用 DevicePolicyManager
并询问其状态
@SuppressLint("NewApi")
private boolean isEncrypted(Context context) {
DevicePolicyManager devicePolicyManager = (DevicePolicyManager) context
.getSystemService(Context.DEVICE_POLICY_SERVICE);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB) {
int status = devicePolicyManager.getStorageEncryptionStatus();
if (DevicePolicyManager.ENCRYPTION_STATUS_ACTIVE == status) {
return true;
}
}
return false;
}
关于android - 查明设备是否经过全盘加密以及使用了什么加密方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6341684/