我遇到此问题,将应用中的图片共享到Gmail会将图片路径放入“收件人”字段。
这是我正在使用的代码:
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.setType("image/*");
shareIntent.putExtra(Intent.EXTRA_SUBJECT,"Beam Dental Insurance Card");
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // temp permission for receiving app to read this file
shareIntent.setDataAndType(insuranceCardImageUri, getActivity().getContentResolver().getType(insuranceCardImageUri));
shareIntent.putExtra(Intent.EXTRA_STREAM, insuranceCardImageUri);
startActivity(Intent.createChooser(shareIntent, "Share Insurance Card"));
这就是我得到的。
To:字段将填充图像路径,并从前面删除“content:”。我已尝试在意图上设置EXTRA_EMAIL
,但这没有帮助。
答案 0 :(得分:5)
首先,替换:
shareIntent.setDataAndType(insuranceCardImageUri, getActivity().getContentResolver().getType(insuranceCardImageUri));
使用:
shareIntent.setType(getActivity().getContentResolver().getType(insuranceCardImageUri));
由于ACTION_SEND
在Uri
的数据字段中未使用Intent
。
然后,删除:
shareIntent.setType("image/*");
因为您不需要拨打setType()
两次(或者甚至拨打setType()
和setDataAndType()
,就像您在此处一样)。
另外,请记住:
如果Uri
未来自您的应用(例如,您自己的ContentProvider
),则Gmail等第三方应用可能无法使用,因为它们可能没有允许访问它。这与将URL传递给第三方应用程序没有什么明显不同,其中URL要求经过身份验证的用户会话才有用。
ACTION_SEND
实施不需要尊重 EXTRA_STREAM
和 EXTRA_TEXT`。
答案 1 :(得分:1)
您可以使用共享意图共享图像,但您必须将图像解码为本地化的位图
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT, "Hey view/download this image");
String path = Images.Media.insertImage(getContentResolver(), loadedImage, "", null);
Uri screenshotUri = Uri.parse(path);
intent.putExtra(Intent.EXTRA_STREAM, screenshotUri);
intent.setType("image/*");
startActivity(Intent.createChooser(intent, "Share image via..."));
loadedImage
是来自http://eofdreams.com/data_images/dreams/face/face-03.jpg