Программно определить, может ли устройство Android выполнять шифрование хранилища

Я разрабатываю приложение для Android, которое запускает процесс шифрования данных на устройстве.

Я определяю статус шифрования с помощью этого кода:

int encrypted = 0;
device_policy_manager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
encrypted = device_policy_manager.getStorageEncryptionStatus();
Log.d("TAG", "encryption status : " + encrypted);
}

На некоторых устройствах процесс шифрования запускается и завершается сбоем. Обычно эти устройства не имеют опции «Шифрование», доступной в меню «Настройки»> «Безопасность» (Android 3.x и Android 4.x).

Есть ли способ программно определить, может ли устройство выполнять шифрование хранилища?

Заранее спасибо.


person mehdi.r    schedule 30.06.2016    source источник


Ответы (1)


Устройства, не поддерживающие шифрование, должны возвращать ENCRYPTION_STATUS_UNSUPPORTED при вызове. getStorageEncryptionStatus().

Надеюсь это поможет.

person Marek Pola    schedule 05.07.2016
comment
Спасибо за ответ, но, к сожалению, некоторые устройства, не поддерживающие шифрование, возвращают неверное значение. У меня возникают проблемы с некоторыми устройствами Fujitsu на Android 4.X и некоторыми устройствами Sharp, также работающими под управлением Android 4.X. С этими устройствами шифрование запускается и терпит неудачу. После этого сброс до заводских настроек обязателен. - person mehdi.r; 06.07.2016