В манифесте разрешения есть. Картинка с помощью Picasso загружается, но при сохранении всегда пустой файл:
ImageView ViewPicture = findViewById(R.id.imageView1);
ViewPicture.setDrawingCacheEnabled(true);
ViewPicture.buildDrawingCache(true);
Picasso.get()
.load("https://apod.nasa.gov/apod/image/vir70_skyview.gif")
.into((ImageView) ViewPicture, new com.squareup.picasso.Callback() {
@Override
public void onSuccess() {
//do smth when picture is loaded successfully
bitmap=ViewPicture.getDrawingCache();
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "savedBitmapSAVE.png");
try {
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 90, fos);
fos.flush();
fos.close();
}
finally {
if (fos != null) fos.close();
}
}
catch (Exception e) {
e.printStackTrace();
};
}
@Override
public void onError(Exception e) {
//do smth when there is picture loading error
}
}
);
Ошибка:
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)' on a null object reference
getExternalStoragePublicDirectoryустарел, на последних версиях Android это не работает, используйте Scoped Storage. Из вопроса не совсем ясно, выполняется ли метод до конца или же пишется ошибка в лог? Приведите логи. И последнее: оставлять пустымonError-- это стрелять себе в ногу. – Vadik Sirekanyan Apr 24 '23 at 04:06getDrawingCacheустарел. Кроме этого, в некоторых случаях этот метод возвращаетnull. У вас нет проверкиbitmapнаnull, поэтому при обращении кbitmapу вас возникаетNullPointerException. – Vadik Sirekanyan Apr 24 '23 at 14:31