Узнайте, зашифровано ли устройство зашифрованным диском и какое шифрование было использовано?

Поскольку поддерживается полное шифрование диска Android 3.0, но я не вижу никакого API для этой способности. Мне нужно знать две конкретные вещи:

  1. Зашифровано ли устройство?
  2. Какое шифрование используется.

Я нашел небольшое объяснение процесса здесь и, похоже, предлагает использовать шифрование 128 AES с 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; } 

Я думаю, что API, который вы ищете, является частью API администрирования устройств . В частности, вам необходимо настроить DeviceAdminReceiver, а в разделе «uses-policies» device_admin.xml добавить элемент «зашифрованный-хранилище». Затем вы сможете вызвать setStorageEncryption, чтобы указать, какой тип шифрования следует применять. DeviceAdminSample.java должен предоставить вам большую часть кода, который вам понадобится. Это своего рода косвенный способ выяснить, зашифровано ли устройство, но это единственный публичный API, о котором я знаю.

Это также не скажет вам, какое шифрование используется … Я не смог найти API для этого.