Сохранить картинку на телефон из интернета
Я использую адаптер
@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>