Поделиться изображением с Glide

У меня есть активность с ViewPager и соответствующий адаптер с изображениями, чтобы я мог сдвинуть их влево или вправо. Изображения загружаются библиотекой Glide из ответа API, они сохраняются с diskCacheStrategy(DiskCacheStrategy.RESOURCE), Поэтому мне интересно, как я могу поделиться ими с родным андроид поделиться? Мне нужен путь к изображению, которое я не могу найти.

Вот код:

адаптер:

@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
    View view = layoutInflater.inflate(R.layout.image_preview_item, container, false);

    String imageUrl = mImageObjectList.get(position);

    currentImage = view.findViewById(R.id.ivCurrentImage);

    GlideApp.with(mContext)
            .asDrawable()
            .load(imageUrl)
            .override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
            .diskCacheStrategy(DiskCacheStrategy.RESOURCE)
            .transition(DrawableTransitionOptions.withCrossFade())
            .into(currentImage);

    container.addView(view);
    return view;

}

И я имею shareSelectedImage() метод в адаптере, который будет вызываться из основного действия, когда пользователь нажимает на общий ресурс:

public void shareSelectedImage() {

    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("image/jpg");
    String shareBody = "Text body";

    intent.putExtra(Intent.EXTRA_STREAM, ?????);
    //intent.putExtra(Intent.EXTRA_TEXT, shareBody);
    listener.shareImage(intent);

}

Так что я не знаю, как получить Uri из текущего изображения в адаптере от Glide на месте знака вопроса? Любой совет? Или любая другая идея о том, как это реализовать? Заранее спасибо!

2 ответа

Сначала получите выбранное изображение

в вашем адаптере

currentImage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent DisplayImage=new Intent(context.getApplicationContext(), DisplayImage.class);
            DisplayImage.putExtra("ImageUrl",imageUrl);
            context.startActivity(DisplayImage);
        }
    });

Совместное использование изображения с отображением изображения, затем загрузите это изображение в ImageView с помощью Glide, затем сохраните это изображение на устройстве и получите путь к изображению для сохранения, затем поделитесь им с другим приложением

Или же

Смотрите этот вопрос

реализация 'com.github.bumptech.glide:glide:4.15.0'

      var mImgBitmap: Bitmap? = null

Glide.with(this).asBitmap().load("url").into(
    object : CustomTarget<Bitmap?>() {
            override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap?>?) {
                mImgBitmap = resource
                imgView.setImageBitmap(resource)
            }

            override fun onLoadCleared(placeholder: Drawable?) {}
    })

val share = Intent(Intent.ACTION_SEND)
share.type = "image/*"
val bytes = ByteArrayOutputStream()
    mImgBitmap?.compress(Bitmap.CompressFormat.JPEG, 100, bytes)
val path = MediaStore.Images.Media.insertImage(
    requireActivity().contentResolver,
    mImgBitmap, "Title", null)
val imageUri: Uri = Uri.parse(path)
    share.putExtra(Intent.EXTRA_STREAM, imageUri)
    share.putExtra(Intent.EXTRA_TEXT, "Here is text")
    startActivity(Intent.createChooser(share, "Share via"))
Другие вопросы по тегам