关于文件下载

2019-08-22  本文已影响0人  杰子他爸

implementation'com.qianwen:okhttp-utils:3.8.0'

implementation'com.lzy.net:okgo:3.0.4'

 可以利用以上两种网络请求框架之一,进行文件的下载。

OkHttpUtils.getInstance()

.init(this)

.debug(true, "okHttp")

.timeout(20 *1000);

OkGo.getInstance().init(this);

/**

* 下载

*

* @param url      下载地址

* @param path    文件保存路径

* @param fileName 文件名称

* @param callback 回调

*/

@Override

public void download(@NonNull String url, @NonNull String path, @NonNull String fileName, @NonNull final FileCallback callback) {

OkGo.get(url).execute(new com.lzy.okgo.callback.FileCallback(path, fileName) {

@Override

        public void onSuccess(com.lzy.okgo.model.Response response) {

callback.onResponse(response.body());

        }

@Override

        public void onStart(com.lzy.okgo.request.base.Request request) {

super.onStart(request);

            callback.onBefore();

        }

@Override

        public void onError(com.lzy.okgo.model.Response response) {

super.onError(response);

            callback.onError("异常");

        }

@Override

        public void downloadProgress(Progress progress) {

super.downloadProgress(progress);

            callback.onProgress(progress.fraction, progress.totalSize);

        }

});

}

/**

* 下载

*

* @param url      下载地址

* @param path    文件保存路径

* @param fileName 文件名称

* @param callback 回调

*/

@Override

public void download(@NonNull String url, @NonNull String path, @NonNull String fileName, @NonNull final FileCallback callback) {

OkHttpUtils.get()

.url(url)

.build()

.execute(new FileCallBack(path, fileName) {

@Override

                public void inProgress(float progress, long total, int id) {

callback.onProgress(progress, total);

                }

@Override

                public void onError(Call call, Response response, Exception e, int id) {

callback.onError(validateError(e, response));

                }

@Override

                public void onResponse(File response, int id) {

callback.onResponse(response);

                }

@Override

                public void onBefore(Request request, int id) {

super.onBefore(request, id);

                    callback.onBefore();

                }

});

}

又或者利用系统原生的DownloadManager。

又或者你用你所想的

上一篇 下一篇

猜你喜欢

热点阅读