【问题标题】:Using Downloadmanager to download file received from applications使用 Downloadmanager 下载从应用程序接收的文件
【发布时间】:2013-09-04 21:59:58
【问题描述】:

我允许用户通过使用其他应用程序中的“共享”按钮来选择 xml 文件并将其发送到我的应用程序,例如 Dropbox、Google 驱动器或本地文件存储。 (见http://developer.android.com/training/sharing/receive.html

我可以通过以下方式成功检索所选/共享文件的 URI,例如从 Dropbox:

Uri receivedUri = Uri.parse(intent.getStringExtra(Intent.EXTRA_TEXT));

但是如何使用 Downloadmanager 将此文件下载到本地文件存储?我是否在我的帐户上自动进行身份验证,例如在 Dropbox 或 Google Drive 上(因为我选择并选择从他们的移动应用程序共享文件)?我是否必须根据我从哪个来源下载文件来不同地配置 Downloadmanager?

谢谢!

【问题讨论】:

    标签: android android-intent data-sharing android-download-manager


    【解决方案1】:

    DownloadManager 不是必需的。您的应用可以通过打开基于 URI 的文件描述符来读取文件,如果它是文件 URI 或内容 URI。请参阅 ContentResolver.openFileDescriptor(),它返回一个 ParcelFileDescriptor,而 ParcelFileDescriptor 又包含一个 FileDescriptor。

    顺便说一句,android.support.v4.content.FileProvider.getUriForFile() 将为您的应用控制下的文件返回 content URI。与文件 URI 不同,您可以在内容 URI 上设置临时访问权限。这样更安全。

    【讨论】:

    • 谢谢!我知道 Downloadmanager 不是必需的,但我想使用它,因为它为我处理了很多复杂性。但是,我的问题更多是关于我应该使用什么下载机制来下载文件,无论文件位于何处?我假设 ContentResolver 和 FileProvider 都希望我为每个可能的来源(例如 Dropbox、Google Drive、++)手动配置和处理授权,我想避免这种情况。我无法控制用户可能拥有的应用程序,并且希望支持所有这些应用程序。
    猜你喜欢
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    相关资源
    最近更新 更多