Мне кажется, или DevicePolicyManager.getStorageEncryptionStatus() не работает?

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

DevicePolicyManager mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
int encryptionStatus = mDPM.getStorageEncryptionStatus();
if (DEBUG) Log.v(TAG, "checkSecuritySettingsSufficient: encryptionStatus=" + encryptionStatus);

Вот в чем проблема: когда я запускаю этот код на устройстве (я пробовал его на Motorola Droid Maxx под управлением Android 4.4.4 и Nexus 7 под управлением Android 5.0.2), которое я ранее зашифровал , DevicePolicyManager.getStorageEncryptionStatus() будет всегда возвращать значение 1, то есть ENCRYPTION_STATUS_INACTIVE.

Поэтому Android сообщает, что устройство не зашифровано, несмотря на то, что файловая система определенно зашифрована (я проверил ее статус на странице Settings > Security).

Эта функция сломана? Кажется, об этом не упоминается ни в SO, ни в других веб-источниках. Это наводит меня на мысль, что я что-то не так делаю в отношении DevicePolicyManager.

ОБНОВЛЕНИЕ После повторного выполнения шагов шифрования на устройстве Motorola DevicePolicyManager.getStorageEncryptionStatus() возвращает правильное значение, но на Nexus 7 по-прежнему не работает.


person Patrick Brennan    schedule 12.02.2015    source источник


Ответы (1)


Я только что столкнулся с этой же проблемой и обнаружил, что это происходит из-за того, что на устройстве включено шифрование диска, но при запуске не требуется вводить пароль. Изменение кода доступа и принудительная установка параметра «Требовать PIN-код при запуске» в значение true заставило DevicePolicyManager.getStorageEncryptionStatus() правильно вернуть ENCRYPTION_STATUS_ACTIVE.

person Mike Brown    schedule 15.06.2015
comment
Да, видимо дело в этом. По нашему опыту, getStorageEncryptionStatus также возвращает ENCRYPTION_STATUS_INACTIVE, если не включено оба шифрования и не требуется PIN-код. Это кажется неправильным, но это то, с чем мы должны работать. - person Patrick Brennan; 16.06.2015
comment
С включенным шифрованием, но без PIN-кода для запуска Nexus 6 возвращает ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEY, но Galaxy S7 с Android 6 возвращает ENCRYPTION_STATUS_ACTIVE - person David; 27.10.2016