触发android下载管理器Cordova

Dav*_*ern 8 javascript android download cordova

我正在尝试使用Cordova应用程序下载文件,这对于使用文件传输插件的较小文件工作正常,但对于较大的文件我想触发android下载管理器.这可能(可能带插件)吗?

我需要能够更改请求的标题,因此'cordova插件后台下载' 插件对我没有帮助.

编辑:我已经修复了我的问题,没有使用Android下载管理器.由于我的应用程序将传输的大多数文件都<50mb,因此触发DM并非绝对必要.由于不是我的赏金,这个问题引起了很多关注.虽然我仍然想要一个好的答案,但我没有太多时间来测试答案.

mom*_*ilo 6

最好的方法是编写自己的插件.编写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);  
        }

       }
Run Code Online (Sandbox Code Playgroud)