关于文件下载
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。
又或者你用你所想的