找出设备是否已完全加密磁盘以及使用了什么加密?

Mik*_*kle 4 encryption android android-3.0-honeycomb

由于支持Android 3.0全盘加密,但我看不到任何API的能力.我需要知道的两件具体事情是:

  1. 设备是否加密?
  2. 使用什么加密.

我在这里找到了对该过程的低级解释,似乎建议使用的加密是带有CBC和ESSIV:SHA256的128 AES,但它没有讨论找出设备是否加密的方法.

那么,有没有办法让我的应用程序可以查询设备是否使用完整的磁盘加密功能,还是我需要采用像Runtime.exec调用这样的hacky解决方案?

sco*_*yab 9

正如@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;
    }
Run Code Online (Sandbox Code Playgroud)