如何在 WhatsApp 中一起共享图像和文本
How do I share image and text together in WhatsApp
我有一个共享功能,可以同时共享图像和文本。我是这样做的,如下图
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()
}
Gmail and Hike. But WhatsApp shows only the image. I have referred this post and few other links. But no luck. I can see that Amazon app and Loco 应用程序能够做到这一点。
谁能帮我解决为什么 WhatsApp 没有从上述意图中获取文本?
尝试
Intent.ACTION_SEND_MULTIPLE
而不是:
Intent.ACTION_SEND
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中
经过反复试验,我发现我们通过 Intent.EXTRA_TEXT 传递文本的方式对 WhatsApp 很重要!!
我刚换了
intent.putExtra(Intent.EXTRA_TEXT, etShareMessage.text)
至
intent.putExtra(Intent.EXTRA_TEXT, etShareMessage.text.toString())
成功了。
我有一个共享功能,可以同时共享图像和文本。我是这样做的,如下图
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()
}
Gmail and Hike. But WhatsApp shows only the image. I have referred this post and few other links. But no luck. I can see that Amazon app and Loco 应用程序能够做到这一点。
谁能帮我解决为什么 WhatsApp 没有从上述意图中获取文本?
尝试
Intent.ACTION_SEND_MULTIPLE
而不是:
Intent.ACTION_SEND
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中
经过反复试验,我发现我们通过 Intent.EXTRA_TEXT 传递文本的方式对 WhatsApp 很重要!!
我刚换了
intent.putExtra(Intent.EXTRA_TEXT, etShareMessage.text)
至
intent.putExtra(Intent.EXTRA_TEXT, etShareMessage.text.toString())
成功了。