Сохранить картинку на телефон из интернета

Я использую адаптер

@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {

Glide.with(mContext).load(mData.get(position).getImage_url()).apply(option).into(holder.img_thumbnail);


holder.button_save.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            BitmapDrawable drawable = (BitmapDrawable)holder.img_thumbnail.getDrawable();
            Bitmap bitmap = drawable.getBitmap();

            File filepath = Environment.getExternalStorageDirectory();
            File dir = new File (filepath.getAbsolutePath()+"/Demo/");
            dir.mkdir();
            File file = new File (dir, System.currentTimeMillis()+".jpg");
            try {
                outputStream = new FileOutputStream(file);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
            Toast.makeText(mContext,"Сохранено",Toast.LENGTH_SHORT).show();
            try {
                outputStream.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                outputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    });
}
}

У меня есть кнопка на экране button_save, кликнув по ней, изображение должно загрузиться из интернета, а затем сохраниться на телефон. Но этого не происходит, приложение закрывается. Подобный вопрос есть здесь, там решением было загрузить по прямой ссылке. А мне нужно, чтобы загружалось через onBindViewHolder потому что ссылки берутся из .json файла


Ответы (1 шт):

Автор решения: Eugene X

Используй обычный URL Open с параметром ?download. Если видишь параметр download тогда передай заголовок Content-Disposition: attachment - браузер по умолчанию запустит скачку файла в штатном режиме.

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
startActivity(browserIntent);
200 OK
Content-Type: text/html; charset=utf-8
Content-Disposition: attachment; filename="cool.html"
Content-Length: 22

<HTML>Save me!</HTML>
→ Ссылка