SetStorageEncryption не производит никакого эффекта

Я играл с API-интерфейсом Device Administration на моем Pandaboard, и кажется, что метод setStorageEncryption не производит никакого эффекта, несмотря на то что статус, возвращаемый getStorageEncryption, является TRUE.

В случае платы Panda внутренняя память приложения физически размещается где-то на съемной флеш-карте (у нее нет другого флэш-накопителя). Поэтому я сделал следующее:

  1. Вызов setStorageEncryption (true) (DeviceAdminSample.java из примера ApiDemos).
  2. Убедитесь, что шифрование активно, вызвав getStorageEncryption, getStorageEncryptionStatus и сохраните файл примера на внутренней памяти.
if (mDPM.getStorageEncryption(mDeviceAdminSample)) { string = "TRUE Encryption"; } FileOutputStream fos = null; fos = openFileOutput("hello_file.txt", Context.MODE_PRIVATE); fos.write(string.getBytes()); fos.close(); 
  1. Извлеките SD-карту с Pandaboard, поместите ее в кард-ридер и скопируйте весь контент на мой компьютер

    Sudo dd if = / dev / sdc of = ~ / workspace / flash_card.bin

  2. Попробуйте найти строку:

    $ 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); 

Это взято из образца аддикции устройства.