如何在WhatsApp中同时分享图片和文字?

3

我有一个分享功能,应该能够同时分享图片和文字。我正在按照以下方式实现:

val uri = FileProvider.getUriForFile(context!!,BuildConfig.APPLICATION_ID + ".provider",file)

val intent = Intent(Intent.ACTION_SEND)
intent.putExtra(Intent.EXTRA_STREAM, uri)
intent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
intent.type = "*/*"

if (etShareMessage.text.isNotEmpty()) {
    intent.putExtra(Intent.EXTRA_TEXT, etShareMessage.text)
}

val title = resources.getString(R.string.screenshot_share_with)

val chooser = Intent.createChooser(intent, title)

// Verify the intent will resolve to at least one activity
if (intent.resolveActivity(activity?.packageManager) != null) {
    startActivity(chooser)
} else {
    ToastUtils.showToast(context,getString(R.string.screenshot_sorry_no_apps_to_share))
    dismiss()
}

它可以在GmailHike上正常工作。但是WhatsApp只显示图片。我参考了this帖子和其他几个链接。但没有成功。我可以看到Amazon应用程序和Loco应用程序能够做到这一点。
为什么WhatsApp不能从上述意图中获取文本?
3个回答

1
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {

                    Bitmap bm = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
                    Intent intent = new Intent(Intent.ACTION_SEND);
                    intent.putExtra(Intent.EXTRA_TEXT, "YOUR TEXT");
                    String path = MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), bm, "", null);
                    Uri screenshotUri = Uri.parse(path);

                    intent.putExtra(Intent.EXTRA_STREAM, screenshotUri);
                    intent.setType("image/*");
                    startActivity(Intent.createChooser(intent, "Share image via..."));
                } else {
                    ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
                }

通过这种方法,我们可以将图片分享到WhatsApp,图片在一个imageView中。

尝试将我的文件放置在外部目录中,因为我的文件位于缓存目录中。但是没有成功。 - Annah
并添加所需的权限。以及运行时权限。 - Jinson Paul

0

尝试一下

Intent.ACTION_SEND_MULTIPLE

改为:

Intent.ACTION_SEND

没有区别 - Annah

0

经过大量的试错,我发现通过Intent.EXTRA_TEXT传递文本的方式对WhatsApp非常重要!

我刚刚做了一些改变。

intent.putExtra(Intent.EXTRA_TEXT, etShareMessage.text)

intent.putExtra(Intent.EXTRA_TEXT, etShareMessage.text.toString())

它起作用了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接