volley框架的文件下载真的是很少见的了,自己做一下记录

import android.os.Environment;import android.support.annotation.NonNull;import android.util.Log;import com.android.volley.NetworkResponse;import com.android.volley.ParseError;import com.android.volley.Request;import com.android.volley.Response;import com.android.volley.VolleyLog;import com.android.volley.toolbox.HttpHeaderParser;/** * Created by CHENQING on 2019/5/23. * 自定义的Volley请求文件网络请求 */public class FileRequest extends Request {    private final Response.Listener mListener;    private static String filename;    /**     * Decoding lock so that we don't decode more than one image at a time (to avoid OOM's)     */    private static final Object sDecodeLock = new Object();    /**     * Creates a new image request, decoding to a maximum specified width and     * height. If both width and height are zero, the image will be decoded to     * its natural size. If one of the two is nonzero, that dimension will be     * clamped and the other one will be set to preserve the image's aspect     * ratio. If both width and height are nonzero, the image will be decoded to     * be fit in the rectangle of dimensions width x height while keeping its     * aspect ratio.     *     * @param url           URL of the image     * @param listener      Listener to receive the decoded bitmap     * @param errorListener Error listener, or null to ignore errors     */    public FileRequest(String url, Response.Listener listener, Response.ErrorListener errorListener) {        super(Method.GET, url, errorListener);        mListener = listener;    }    public FileRequest( int method ,String url, Response.Listener listener, Response.ErrorListener errorListener) {        super(method, url, errorListener);        mListener = listener;    }    @Override    protected Response parseNetworkResponse(NetworkResponse response) {        // Serialize all decode on a global lock to reduce concurrent heap usage.        synchronized (sDecodeLock) {            try {                if (response.data == null) {                    return Response.error(new ParseError(response));                } else {                    Log.i("getdownloadresponse" , response.headers.get("Content-Disposition"));                    filename = response.headers.get("Content-Disposition");                    return Response.success(response.data, HttpHeaderParser.parseCacheHeaders(response));                }            } catch (OutOfMemoryError e) {                VolleyLog.e("Caught OOM for %d byte image, url=%s", response.data.length, getUrl());                return Response.error(new ParseError(e));            }        }    }    //获取文件名称并传给页面    public static String getfilename(){        return filename;    }    @Override    protected void deliverResponse(byte[] response) {        mListener.onResponse(response);    }}

更多相关文章

  1. Android关于SD卡中多层目录的创建
  2. kernel 及 ramdisk 移植
  3. Android(安卓)Studio 打包方式
  4. Android追加写入文件的几种方法
  5. Android从网上下载文件
  6. Android调用Jni,非常简单的一个Demo
  7. 学习笔记 Android(安卓)使用AIDL实现进程间通信
  8. [zz]一个JNI下c和java程序范例
  9. NPM 和webpack 的基础使用

随机推荐

  1. 用JS实现简单计算器的坑
  2. localstorage刷新背景页面不变色
  3. laravel 商城实战开发 Dingoapi 用户管理
  4. axios跨域请求,post总是报错No ‘Access-C
  5. 超可爱Q版人物表情怎么画?可爱Q版小人表情
  6. 保存用户设置练习
  7. 用cookie实现简单的用户自定义页面样式
  8. Docker —— 简介与镜像用法
  9. 网站搭建系列:云虚拟主机建站部署的过程中
  10. 商品和oss