I'm using BitmapFactory.decodeStream
to load an image from a url in Android. I want to only download images below a certain size, and I'm currently using getContentLength
to check this.
However, I'm told that getContentLength
doesn't always provide the size of the file, and in those cases I would like to stop the download as soon as I know that the file is too big. What is the right way to do this?
Here is my current code. I currently return null if getContentLength
doesn't provide an answer.
HttpGet httpRequest = new HttpGet(new URL(urlString).toURI());
HttpClient httpClient = new DefaultHttpClient();
HttpResponse response = (HttpResponse) httpClient.execute(httpRequest);
HttpEntity entity = response.getEntity();
BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity);
final long contentLength = bufHttpEntity.getContentLength();
if ((contentLength >= 0 && (maxLength == 0 || contentLength < maxLength))) {
InputStream is = bufHttpEntity.getContent();
Bitmap bitmap = BitmapFactory.decodeStream(is);
return new BitmapDrawable(bitmap);
} else {
return null;
}