Сохранение файла с помощью Storage Access Framework в Android
я интегрирую структуру доступа к документам с моим приложением доступа к облачному хранилищу. Используя этой документация я смог получить доступ к файлу и получить его (я просто использую функцию прикрепления приложения Gmail, чтобы проверить это).
теперь я пытаюсь найти, как сохранить файл с помощью того же метода (сохранить файл непосредственно через приложение в облачное хранилище), и я сделал следующие изменения:
для вызова getRoots,
row.add(Root.COLUMN_FLAGS, Root.FLAG_SUPPORTS_CREATE);
и у меня также заменить на createDocument
метод.
Я не вижу в пути пример кода или документации о том, как это сделать. Я также вижу, что куча приложений, таких как приложение" Фотографии", имеет кнопку" Поделиться", которая использует другой метод (журналы показывают miniShareActivity), и мое приложение не отображается в этом (похоже, оно использует другой механизм обмена файлами)
Я ищу информацию о
Как использовать SAF для хранения файла (любой пример файла будет будьте великолепны или указатели на документацию). Я предполагаю, что это позволит пользователю использовать интерфейс выбора для перехода к папке и хранения файла.
Как заставить приложение отображаться в списке приложений "Minishare activity" для импорта файла в приложение (похоже, что он не предоставляет интерфейс выбора, но я все равно хотел бы предоставить поддержку, чтобы файл был сохранен в месте по умолчанию)
1 ответов
кнопка Share, на которую вы ссылаетесь в других приложениях, вероятно, использует ACTION_SEND как действие намерения, а не ACTION_CREATE_DOCUMENT Это было введено с платформой доступа к хранилищу.
вы, вероятно, хотите поддержать оба, так как ACTION_CREATE_DOCUMENT был представлен только в KitKat, и более старые приложения могут не знать об этом. Аналогично, вы можете также поддержать действие Intent ACTION_GET_CONTENT для доступа на чтение на устройствах pre-KitKat (ACTION_GET_CONTENT обрабатывается SAF при работе на KitKat+, но ваше приложение по-прежнему должно обрабатывать его при работе на устройстве pre-KitKat). Являются <intent-filter>
s в вашем AndroidManifest настроен, чтобы соответствовать всем этим типам намерений?