Я использую Picasso для загрузки изображений из базы данных Firebase.
Теперь я хочу сохранить его на локальном хранилище.
Но это не работает. Я пробовал другие сообщения на StackOverflow, но ни один из них не работал нормально.
Некоторые из них имеют проблемы с разрешением во время выполнения. Помогите арендовать.
Поэтому мне нужно сохранить изображение в локальном хранилище, чтобы пользователь мог найти его в галерее, и оно должно быть видно в галерее
Я добавил разрешение на чтение / запись на внешнем устройстве
Код не работает, изображение не сохраняется в локальном хранилище, хотя его изображение сохраняется, не отображается в галерее
public class SingleImageActivity extends AppCompatActivity {
String imageurl;
ImageView img;
Button download,share;
private Target target;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_single_image);
imageurl = getIntent().getStringExtra("imageurl");
img=findViewById(R.id.image);
download=findViewById(R.id.download);
share=findViewById(R.id.share);
Picasso
.with(getApplicationContext())
.load(imageurl)
.into(img);
download.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getBaseContext(), "Download Started...", Toast.LENGTH_SHORT).show();
boolean success = true;
File wallpaperDirectory = new File(Environment.getExternalStorageDirectory().getPath()+File.separator+"Walls");
if(!wallpaperDirectory.exists()){
success = wallpaperDirectory.mkdir();
}
if (success) {
downloadImg();
download.setEnabled(!download.isEnabled());
}
else{
Toast.makeText(getBaseContext(), "The app was not allowed to write to your storage. Please consider granting it this permission", Toast.LENGTH_LONG).show();
}
}
});
share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
private void downloadImg() {
target = new Target() {
@Override
public void onBitmapLoaded(final Bitmap bitmap, Picasso.LoadedFrom from) {
new Thread(new Runnable() {
@Override
public void run() {
String filename = "img"+ new Date().getTime() + ".png";
File file = new File(Environment.getExternalStorageDirectory().getPath()+"/Walls"+File.separator, filename);
try {
file.createNewFile();
FileOutputStream ostream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG,100,ostream);
ostream.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {}
};
Picasso
.with(getApplicationContext())
.load(imageurl)
.into(target);
}
}