Изображение не сохранено на локальном хранилище из firebase и не может быть просмотрено в галерее - PullRequest
0 голосов
/ 30 августа 2018

Я использую 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);

    }



}
...