我们正在开发安卓上的安全应用程序。用户需要加密他们设备的文件系统,但我们需要检查这个事实并禁止使用应用程序。有没有可能检查文件系统是否已经加密?另外,一些Android版本低于3.0的设备也支持加密,例如Motorola RAZR。了解这些设备的加密情况也很有意义。
只是为了澄清CommonsWare的回答,你可以 阅读 设备加密状态而不需要任何Android权限。
/**
* Returns the encryption status of the device. Prior to Honeycomb, whole device encryption was
* not supported by Android, and this method returns ENCRYPTION_STATUS_UNSUPPORTED.
*
* @return One of the following constants from DevicePolicyManager:
* ENCRYPTION_STATUS_UNSUPPORTED, ENCRYPTION_STATUS_INACTIVE,
* ENCRYPTION_STATUS_ACTIVATING, ENCRYPTION_STATUS_ACTIVE,
* ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEY, ENCRYPTION_STATUS_ACTIVE_PER_USER.
*/
@TargetApi(11)
private static int getDeviceEncryptionStatus(Context context)
{
int status = DevicePolicyManager.ENCRYPTION_STATUS_UNSUPPORTED;
if (Build.VERSION.SDK_INT >= 11) {
final DevicePolicyManager dpm =
(DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
if (dpm != null) {
status = dpm.getStorageEncryptionStatus();
}
}
return status;
}
请查看DevicePolicyManager文档和加密状态标志。
值得一提的是,为了支持直接引导等功能,Android已经从全盘加密转向了基于文件的加密。请参阅基于文件的加密。
DevicePolicyManager
上的getStorageEncryptionStatus()
来查找设备的加密状态。getStorageEncryptionStatus()
返回ENCRYPTION_STATUS_INACTIVE
。ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEY
。