【问题标题】:Trigger android download manager Cordova [closed]触发 android 下载管理器 Cordova [关闭]
【发布时间】:2016-09-04 09:00:46
【问题描述】:

我正在尝试使用 Cordova 应用程序下载文件,这适用于使用 File transfer plugin 的较小文件,但对于较大的文件,我想触发 android 下载管理器。这可能吗(可能有插件)?

我需要能够更改请求的标头,所以'cordova plugin background download' 插件对我没有帮助。

【问题讨论】:

标签: javascript android cordova download


【解决方案1】:

最好的方法是编写自己的插件。编写 Cordova 插件很容易,只需遵循官方文档即可。我们这样做是因为还需要自定义下载过程。使用这种方法看起来像一个本地调用,因为它激活了本地 DM,因此用户可以查看进度、取消它、暂停等。

一旦你注册了你自己的插件,这是你可以用来开始的代码:

    import android.app.DownloadManager;
        import android.app.DownloadManager.Request;

        public class DownloadPlugin extends CordovaPlugin{

        private DownloadManager downloadManager;

        public DownloadPlugin() {
           downloadManager = (DownloadManager) webView.getContext()
                                                               .getSystemService(webView.getContext().DOWNLOAD_SERVICE);
        }

        @Override
        public boolean execute(String action, JSONArray args,
                               CallbackContext callbackContext) throws JSONException {

          String downloadUrl = args.getString(0);
          startDownloadForUrl(String downloadUrl);

        }

        public void startDownloadForUrl(String downloadUrl){
                Request downloadRequest = new Request(downloadUrl);
                if (accessToken != null) { // we use oauth so this is example of changing download request
                    downloadRequest.addRequestHeader("Authorization", "Bearer "
                            + accessToken);
                }
                downloadRequest
                .setDescription("description")
                .setDestinationInExternalFilesDir("folderName", "fileName");
                downloadManager.enqueue(downloadRequest);  
        }

       }

【讨论】:

  • 为什么不分叉他提到的插件并发送 PR 让它变得更好?
  • 'cordova 插件后台下载'没有使用 DownloadManager(我检查他们仍然没有使用它,他们使用 HttpURLConnection)。我们想使用 DownloadManager,因为它有很多开箱即用的功能。现在有很多以前没有的插件,其中很多都在使用 DM,例如。 github.com/sgrebnov/cordova-plugin-background-download。对于这个,你说的很有意义。 “cordova 插件后台下载”是“官方”下载 Cordova 插件,它们肯定不会改变它多年的工作方式。
  • 在问题中,名为“cordova 插件后台下载”的插件链接到使用 DM 的github.com/sgrebnov/cordova-plugin-background-download。这就是我所指的关于发送 PR 以添加标头支持的内容。不使用DM的核心插件是文件传输插件
  • 当然也可以,如果有人愿意的话。使用链接插件添加标题应该很简单。
【解决方案2】:

这是一个现成的downloader plugin,符合您的要求并且比较活跃。

它还提供了usage链接中提到的各种下载选项

【讨论】:

    【解决方案3】:

    这是另一个downloadmanager plugin,它会在文件下载并适用于原始任务时显示通知。

    我还创建了一个fork 并添加了一个方法来在文件之前已经下载过时发出通知。当文件通过 web api 下载时,这是必要的,并且您需要在保存文件之前检查服务器的响应。

    【讨论】:

      【解决方案4】:

      您可以查看下一个插件。

      它适用于 Android 和 iPhone。

      https://github.com/ogarzonm85/cordova-plugin-downloader.git

      【讨论】:

        猜你喜欢
        • 2010-12-11
        • 2012-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-20
        • 1970-01-01
        • 2014-01-23
        • 1970-01-01
        相关资源
        最近更新 更多