将多个图像 url 共享到其他应用程序

Share multiple image urls to other application

我正在从服务器获取图像 url,现在我想将相同的 url 共享给另一个应用程序,但它说:

The File format is not supported

这是我的代码:

private fun shareImages(urls:List<String>?) {
    var listOfImageUri = ArrayList<Uri>()
    for (i in urls!!.indices) {
        listOfImageUri.add( Uri.parse(urls[i].url))
    }

    val shareIntent: Intent = Intent().apply {
        action = Intent.ACTION_SEND_MULTIPLE
        putParcelableArrayListExtra(Intent.EXTRA_STREAM, listOfImageUri)
        type = "image/*"
        flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
    }
    try {
        startActivity(Intent.createChooser(shareIntent, "Share Via:"))
    } catch (e: ActivityNotFoundException) {
        Toast.makeText(baseActivity, "No App Available", Toast.LENGTH_SHORT).show()
    }

}

我试过的link: share multiple images

注意:在图片分享过程中我不想保存图片到SD卡

请帮忙..感谢任何帮助。

请尝试使用此代码

Uri uri1 = Uri.parse("https://cdn.pixabay.com/photo/2015/12/01/20/28/road-1072823_960_720.jpg");
Uri uri2 = Uri.parse("https://cdn.pixabay.com/photo/2015/12/01/20/28/road-1072823_960_720.jpg");
Uri uri3 = Uri.parse("https://cdn.pixabay.com/photo/2015/12/01/20/28/road-1072823_960_720.jpg");

Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND_MULTIPLE);
intent.putExtra(Intent.EXTRA_SUBJECT, "Here are some files.");
intent.setType("image/*"); /* This example is sharing jpeg images. */

ArrayList<Uri> files = new ArrayList<Uri>();
files.add(uri1);
files.add(uri2);
files.add(uri3);

intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, files);
startActivity(Intent.createChooser(intent , "Share image");

我可以发送多张图片所以回答我自己的问题可能会对某人有所帮助:

private fun convertUrlToUri(filesPath:ArrayList<ImageArray>?) {
        for (i in filesPath!!.indices) {
            Glide.with(this)
                    .asBitmap()
                    .load(filesPath[i].url)
                    .into(object : SimpleTarget<Bitmap>() {
                        override fun onResourceReady(resource: Bitmap, transition: com.bumptech.glide.request.transition.Transition<in Bitmap>?) {
                            resource.compress(Bitmap.CompressFormat.PNG, 100, ByteArrayOutputStream())
                            listOfUris.add(Uri.parse(MediaStore.Images.Media.insertImage(baseActivity.contentResolver, resource, "", null)))
                        }
                    })
        }
    }

    private fun shareImages(comment:String?) {
        if (listOfUris.isNotEmpty()) {
            val shareIntent: Intent = Intent().apply {
                action = Intent.ACTION_SEND_MULTIPLE
                type = "*/*"
                putParcelableArrayListExtra(Intent.EXTRA_STREAM, listOfUris)
                comment?.let {putExtra(Intent.EXTRA_TEXT,it)  }

            }
            try {
                startActivity(Intent.createChooser(shareIntent, resources.getString(R.string.share_via)))
                listOfUris.clear()
            } catch (e: ActivityNotFoundException) {
                Toast.makeText(baseActivity, "No App Available", Toast.LENGTH_SHORT).show()
            }
        }

    }