Как поделиться изображением с помощью Android-Universal-Image-Loader?

Как поделиться изображением с помощью Android-Universal-Image-Loader У меня есть изображение, которое загружается через imageloader, но предоставляя URL для загрузчика изображений, я думаю, что загрузчик изображений уже записал изображение с URL на диск и затем отобразил его

как я могу поделиться им без перезаписи на диск?

item_zoom_image_view - это ImageView selectedItemImage - это класс, у которого есть свойство, содержащее URL ( http:)

вот мой конфиг загрузчика изображений:

public void initImageLoader(Context context) {
    DisplayImageOptions options = new DisplayImageOptions.Builder()
            .cacheOnDisc().imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)
            .bitmapConfig(Bitmap.Config.RGB_565)
            .build();

    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
            context).threadPriority(Thread.NORM_PRIORITY - 2)
            .denyCacheImageMultipleSizesInMemory()
            .discCacheFileNameGenerator(new Md5FileNameGenerator())
            .defaultDisplayImageOptions(options)
            .memoryCache(new WeakMemoryCache())
            .denyCacheImageMultipleSizesInMemory()
            .tasksProcessingOrder(QueueProcessingType.LIFO).build();

    imgLoader = ImageLoader.getInstance();
    imgLoader.init(config);
}

и вот как я отображаю изображение

ImageLoader imgLoader = AppData.imgLoader;
if (!selectedItemImage.getImageURL().trim().equals("")) {
    imgLoader.displayImage(selectedItemImage.getImageURL(), item_zoom_image_view, new ImageLoadingListener() {
        @Override
        public void onLoadingStarted(String imageUri, View view) {
            Progress.ShowProgressDialog(true);
            currentImageURI = "";
        }

        @Override
        public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
            item_zoom_image_view.setImageResource(R.drawable.ic_artificial_flowers);
            Progress.HideProgressDialog();;
            currentImageURI = "";
        }

        @Override
        public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
            Progress.HideProgressDialog();;
            currentImageURI = imageUri;
        }

        @Override
        public void onLoadingCancelled(String imageUri, View view) {
            item_zoom_image_view.setImageResource(R.drawable.ic_artificial_flowers);
            Progress.HideProgressDialog();;
            currentImageURI = "";
        }
    });
}
else
{
    item_zoom_image_view.setImageResource(R.drawable.ic_artificial_flowers);
    Progress.HideProgressDialog();;
    currentImageURI = "";
}

Вот как я делюсь изображением:

void ShareImg() {
    try {
        Uri bmpUri = Uri.parse(currentImageURI);
        if (bmpUri != null) {
            // Construct a ShareIntent with link to image
            Intent shareIntent = new Intent();
            shareIntent.setAction(Intent.ACTION_SEND);
            shareIntent.putExtra(Intent.EXTRA_STREAM, bmpUri);
            shareIntent.setType("image/*");
            // Launch sharing dialog for image
            startActivity(Intent.createChooser(shareIntent, "Share Image"));
        } else {
            // ...sharing failed, handle error
        }
    } catch (Exception e) {

    }
}

проблема в том, что URI, который я использовал при отображении изображения (currentImageURI), неверен или я не знаю, но он показывает черное изображение

1 ответ

Вам нужно сохранить растровое изображение в хранилище, чтобы поделиться им. Вы не можете поделиться кэшированным изображением, которое загрузчик изображений скачивает с URL

 @Override
    public void onLoadingComplete(String imageUri, View view, Bitmap 
     loadedImage) {
        Progress.HideProgressDialog();;
        currentImageURI = imageUri;
              loadedImage
//save it in storage then share
    }
Другие вопросы по тегам