Java 通过可能的对话框向用户提供前台下载

Java 通过可能的对话框向用户提供前台下载,java,android,android-intent,android-dialog,android-download-manager,Java,Android,Android Intent,Android Dialog,Android Download Manager,我正在与可用性设计作斗争 让我们使用只有一个权限的应用程序,android.permission.INTERNET 我想从远程URL(我无法控制服务器端)下载图像,但要下载它,以便用户可以选择是否以及在何处下载该文件。 显示用于流程审批和/或选择最终目的地的对话框 我曾考虑过以下解决办法: 使用setdestinationnexternalPublicDir下载管理器 两个错误,我不想添加WRITE\u EXTERNAL\u STORAGE权限,用户无法决定是否下载 使用Intent.AC

我正在与可用性设计作斗争

让我们使用只有一个权限的应用程序,
android.permission.INTERNET

我想从远程URL(我无法控制服务器端)下载图像,但要下载它,以便用户可以选择是否以及在何处下载该文件。
显示用于流程审批和/或选择最终目的地的对话框

我曾考虑过以下解决办法:

  • 使用
    setdestinationnexternalPublicDir下载管理器
    
    • 两个错误,我不想添加
      WRITE\u EXTERNAL\u STORAGE
      权限,用户无法决定是否下载
  • 使用
    Intent.ACTION\u视图启动浏览器
    
    • standalone将向用户显示图像,但不会自动启动下载
  • 使用
    Intent.ACTION\u视图
    和自定义代理脚本
    • 服务器不是我的,我不想提供服务器端代理下载强制脚本
  • 将HTTP替换为FTP,并由用户决定
    • 无法工作,因为该服务器上的图像无法通过FTP访问
  • 提供下载应用程序的兼容性(如“下载所有文件”、各种“文件管理器”…)
如何在不扩展当前权限或依赖非标准应用程序的情况下实现此目标?



链接到此github问题

您的应用程序下载文件并可能将其写入外部存储。我觉得你应该请求许可,以准确地表示你的应用程序的功能


那么你的第一个解决方案就行了。在进行下载调用之前,您只需要任何提示用户的方法。或者将主动接受作为工作流程的一部分。

嗨,杰夫,很高兴听到你的意见。问题是
WRITE\u EXTERNAL\u STORAGE
意味着对整个外部存储进行R/W访问,这是我真的不想做的事情。我接受这个解决方案,但我不满意可能的用户端流解决方案