Как остановить файловый менеджер от добавления расширения .txt к текстовым файлам? - PullRequest
0 голосов
/ 21 декабря 2018

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

Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TITLE, layoutName + ".layout");
this.startActivityForResult(intent, R.id.fileManager);

И это для импорта обратно:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("text/plain");
this.startActivityForResult(intent, R.id.fileManager);

Когда я сохраняю файл в облакепровайдера, как Google Drive, все работает как положено.Но когда я сохраняю файл в локальном каталоге, Android добавляет расширение файла .txt - поэтому полученный файл называется MyLayout.layout.txt.Есть ли способ остановить это?

Я экспериментировал с различными типами MIME.Если я использую text / json, то Android не добавляет расширение .txt, и приложение может импортировать файлы, которые оно экспортировало с этим типом MIME, но оно показывает старые файлы, которые были экспортированы как текстовые / обычные, а также файлы, экспортированные изверсия iOS - как не открываемая, когда я пытаюсь импортировать их.Если я использую более общий тип, такой как application / octet-stream или * / *, Android не добавляет расширение файла, но помечает файл как двоичный файл и показывает, что он не открывается.

Isесть ли настройка, которую я могу изменить в целях экспорта, чтобы запретить добавление этого дополнительного расширения файла?Или какие-то другие уловки, чтобы этого избежать?

Обновление

Я попытался получить путь от URI поставщика контента после завершения экспорта, а затем переименовал файл, чтобы удалитьрасширение .txt.Это работало только в некоторых локальных каталогах и различалось в зависимости от версии Android, и даже когда это работало, переименованный файл не был импортирован.Blech.В качестве обходного пути я оставлю расширения .txt и обновлю версию iOS, чтобы принимать файлы с этим расширением для совместимости.

...