嘿,今天的你过的还好吗,今天分享AsyncHttp访问网络下载文件,解决totalSize = -1的情况
首先最基本的,引包
implementation 'com.loopj.android:android-async-http:1.4.9'
根据文档的说明,采用FileAsyncHttpResponseHandler可以实现下载文件的功能.
AsyncHttpClient mClient = new AsyncHttpClient();
//下载的功能
//路径
final String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/QiHangBookStore/" + bookData.getBookfile() + ".txt";
//文件
final File file = new File(path);
//判断文件是否存在
if (file.exists()) {
//TODO:打开书籍
finalViewHolder.mButton.setText("点击打开");
} else {
//不存在就创建
//默认使用baigzip压缩,导致无法提前获取下载文件的总du大小zhi,不让它压缩即可
mClient.addHeader("Accept-Encoding", "identity");
mClient.get(bookData.getBookfile(), new FileAsyncHttpResponseHandler(file) {
@Override
public void onFailure(int statusCode, Header[] headers, Throwable throwable, File file) {
//下载失败
Log.i("it520", "onFailure: " + throwable);
finalViewHolder.mButton.setText("下载失败");
}
@Override
public void onSuccess(int statusCode, Header[] headers, File file) {
//下载成功
finalViewHolder.mButton.setText("点击打开");
}
@Override
public void onProgress(long bytesWritten, long totalSize) {
//进度条
super.onProgress(bytesWritten, totalSize);
finalViewHolder.mButton.setText(bytesWritten * 100 / totalSize + "%");
}
});
}
注:mClient.addHeader("Accept-Encoding", "identity");这个代码是不让它使用baigzip压缩文件,这样可以解决totalSize = -1的情况
这样就有了下载的逻辑,其他的根据自身情况来进行补充就可以正常使用
网友评论