由于支持 Android 3.0 全盘加密,但我看不到任何支持该功能的 API。我需要知道的两件事是:
- 设备是否加密?
- 使用什么加密方式。
我找到了一个低层次的解释在这里处理 http://source.android.com/tech/encryption/android_crypto_implementation.html它似乎表明使用的加密是带有 CBC 和 ESSIV:SHA256 的 128 AES,但它没有谈论如何查找设备是否加密。
那么,有没有一种方法可以让我的应用程序查询设备是否正在使用全盘加密功能,或者我是否需要求助于 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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)