How to download an Image by using Volley?

You are using the wrong type of request. There is an ImageRequest or ImageLoader.

Please refer to an example snippet in the docs or the example below:

ImageView mImageView;
String url = "http://i.imgur.com/7spzG.png";
mImageView = (ImageView) findViewById(R.id.myImage);
...

// Retrieves an image specified by the URL, displays it in the UI.
ImageRequest request = new ImageRequest(url,
    new Response.Listener<Bitmap>() {
        @Override
        public void onResponse(Bitmap bitmap) {
            mImageView.setImageBitmap(bitmap);
        }
    }, 0, 0, null,
    new Response.ErrorListener() {
        public void onErrorResponse(VolleyError error) {
            mImageView.setImageResource(R.drawable.image_load_error);
        }
    });
// Access the RequestQueue through your singleton class.
MySingleton.getInstance(this).addToRequestQueue(request);

Or you can use NetworkImageView, also part of Volley.

However, be advised that Google has deprecated their own Volley by phasing out Apache, but there is a temp workaround: How to use the legacy Apache HTTP client on Android Marshmallow?

Furthermore, now with P+, if your app uses Google Maps SDK, you will additionally need to add a uses-library/false attribute

But like most people will suggest, if you can, use Picasso http://square.github.io/picasso/ or something newer.


Use this constructor version:

new ImageRequest(url, myResponseListener, maxWidth,
                 maxHeight, scaleType, Config.RGB_565, myErrorListener);

This constructor isn't deprecated in Volley ImageRequest.