Предложить загрузку переднего плана пользователю с возможным диалогом

Я борюсь с дизайном юзабилити.

Пусть есть приложение, которое имеет только одно разрешение, android.permission.INTERNET.

Я хочу загрузить изображение с удаленного URL (где я не могу контролировать серверную), но загрузите его, чтобы пользователь мог выбрать, будет ли и где скачать этот файл.
Отображение диалога для утверждения процесса и/или выбора конечного адресата.

Я рассмотрел эти решения:

  • DownloadManager с помощью setDestinationInExternalPublicDir
    • Две ошибки, я не хочу добавлять разрешения WRITE_EXTERNAL_STORAGE, и пользователь не может решить, загружаться или нет.
  • Использование Intent.ACTION_VIEW для запуска браузера
    • standalone будет отображать изображение пользователю, но не запускать загрузку автоматически
  • Использование Intent.ACTION_VIEW и пользовательского прокси script
    • Сервер не мой, и я не хочу, чтобы обеспечить загрузку прокси-сервера на стороне сервера script
  • Замена HTTP (S) для FTP и разрешение пользователю
    • Не работает, поскольку изображения на этом сервере недоступны через FTP
  • Совместимость с Providin для приложений загрузки (таких как "Загрузка всех файлов", различные "Менеджеры файлов",...)

Как добиться этого без расширения текущих разрешений или зависеть от нестандартного приложения?


Связано с этой проблемой github https://github.com/smarek/Simple-Dilbert/issues/1

Ответ 1

Ваше приложение загружает файлы и потенциально записывает их во внешнее хранилище. Я чувствую, что вы должны запрашивать разрешение WRITE_EXTERNAL_STORAGE (что также подразумевает READ_EXTERNAL_STORAGE), чтобы точно представлять, что делает ваше приложение.

Тогда ваше первое решение работает. Перед вызовом загрузки вам просто нужен способ запроса пользователя. Или иначе принимайте активное участие в процессе работы.