Обмен файлами зашифрованного контента - PullRequest
1 голос
/ 17 февраля 2020

Мое приложение управляет различными типами файлов (текстовые документы, изображения, текст, ...) и имеет возможность обмениваться ими, открывать и получать их. Это реализовано с помощью пользовательского ContentProvider, используя его метод openFile(Uri uri, String mode). Недавно я реализовал хранение файлов на внешнем хранилище, зашифровав их с помощью Android EncryptedFile. В итоге я реализовал смесь решений из этого вопроса :

  • Если режим файла содержит "w", создайте канал с помощью ParcelFileDescriptor.createPipe(...), подключите один конец к поток записи и возврат стороны записи.
  • В противном случае создайте незашифрованную копию файла во внутреннем хранилище и верните ее через ParcelFileDescriptor.open(...).

. Это работает, но подход с Временный файл имеет несколько проблем:

  • Если я удаляю файл при вызове ParcelFileDescriptor.OnCloseListener s onClose(...), я могу закончить создание временного файла несколько раз, так как openFile(...) может быть вызвано несколько раз. Это может быть очень медленно для больших файлов.
  • Если я реализую удаление временных файлов позже, чтобы временный файл мог повторно использоваться при вызове openFile(...), мне нужно выполнить какую-то проверку, так как содержимое оригинального файла, возможно, изменился за это время. По сути, это кеширование, которое является одной из наиболее сложных проблем в области компьютерных наук.

Есть ли лучший способ обработки зашифрованных файлов? Или это на данный момент лучший?

...