Я играл с API-интерфейсом Device Administration на моем Pandaboard, и кажется, что метод setStorageEncryption не производит никакого эффекта, несмотря на то что статус, возвращаемый getStorageEncryption, является TRUE.
В случае платы Panda внутренняя память приложения физически размещается где-то на съемной флеш-карте (у нее нет другого флэш-накопителя). Поэтому я сделал следующее:
if (mDPM.getStorageEncryption(mDeviceAdminSample)) { string = "TRUE Encryption"; } FileOutputStream fos = null; fos = openFileOutput("hello_file.txt", Context.MODE_PRIVATE); fos.write(string.getBytes()); fos.close();
Извлеките SD-карту с Pandaboard, поместите ее в кард-ридер и скопируйте весь контент на мой компьютер
Sudo dd if = / dev / sdc of = ~ / workspace / flash_card.bin
Попробуйте найти строку:
$ Grep -Ubo –binary-files = текст 'TRUE Encryption' ~ / workspace / flash_card.bin
583576877: ИСТИННОЕ шифрование
Когда он нашел строку, я делаю вывод, что шифрование отсутствует.
Действительно ли setStorageEncryption включает шифрование или только запрашивает шифрование или, другими словами, «заявляет о намерении», чтобы зашифровать хранилище?
Я считаю, что вам нужно дополнительно вызвать следующий код:
// Launch the activity to activate encryption. May or may not return! Intent intent = new Intent(DevicePolicyManager.ACTION_START_ENCRYPTION); startActivityForResult(intent, REQUEST_CODE_START_ENCRYPTION);
Это взято из образца аддикции устройства.