Picasso не может сохранить на SD-карту с того же URL - PullRequest
0 голосов
/ 02 октября 2018

Я хочу сохранить изображение из URL в хранилище с помощью Picasso, но у меня проблема с моим кодом.

У меня есть переменная для сохранения изображения.

String urlImage = "http://mylink/buzz/test2.jpg";

этотработает, но когда я использую

fileUrl = fileName +"." + fileType;
String urlImage = "http://mylink/buzz/" + fileUrl;

не работает

содержимое fileUrl равно test2.jpg

вот мой код для сохранения изображения

private Target picassoImageTarget(Context context, final String imageDir, final String imageName) {
    Log.d("picassoImageTarget", " picassoImageTarget");
    ContextWrapper cw = new ContextWrapper(context);
    final File directory = cw.getDir(imageDir, Context.MODE_PRIVATE); // path to /data/data/yourapp/app_imageDir
    return new Target() {
        @Override
        public void onBitmapLoaded(final Bitmap bitmap, Picasso.LoadedFrom from) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    final File myImageFile = new File(directory, imageName); // Create image file
                    FileOutputStream fos = null;
                    try {
                        fos = new FileOutputStream(myImageFile);
                        bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
                    } catch (IOException e) {
                        e.printStackTrace();
                    } finally {
                        try {
                            fos.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                    Log.i("image", "image saved to >>>" + myImageFile.getAbsolutePath());

                }
            }).start();
        }

        @Override
        public void onBitmapFailed(Drawable errorDrawable) {
        }
        @Override
        public void onPrepareLoad(Drawable placeHolderDrawable) {
            if (placeHolderDrawable != null) {}
        }
    };
}

и его код для вызова Пикассо.

Picasso.with(DrawerActivity.this).load(url).into(picassoImageTarget(getApplicationContext(), "imageDir", fileUrl));
...