关于文件下载

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。

又或者你用你所想的

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 英文文档,一开始我也是抗拒的,边翻译边看,也就花费了1个小时基本就阅读过了,我的英文基础其实很差。附上链接:链接:...
    lonecolonel阅读 10,097评论 3 1
  • 引言 由于项目需要,需要实现对特定Excel模板数据的导入操作,而模板需要由开发人员设计,而模板需要对各种数据做校...
    殇别云之阅读 274评论 0 2
  • OkGo使用分享 OkGo这个框架可能很多人听过,但是okHttp开发安卓的人士一定听过,可能还在使用。现在...
    压抑的内心阅读 4,715评论 0 2
  • OkGo,一个专注于让网络请求更简单的框架,与RxJava完美结合,比Retrofit更简单易用。 OkGo - ...
    压抑的内心阅读 16,543评论 0 9
  • 问题 1.在你的原生家庭中,谁扮演着“追逐者”的角色?谁又是“疏远者”呢? 在我的原生家庭中,因为从小是和奶奶一起...
    淑贤妈妈阅读 650评论 0 1