我已经尝试了几个小时来分享文字和文字。使用Intent.ACTION_SEND
的图片(同时)。尽管我试图让它发挥作用,但我仍然无法做到。
我在Google上搜索过,这可能很奇怪,但我只发现了两篇关于如何分享文字和帖子的帖子。图像同时,我尝试了它们但是没有一个工作。我尝试使用一种方法,这就是我最终得到的结果:
Uri imageToShare = Uri.parse("android.resource://com.example.application/drawable/invite"); //Image to be shared
String textToShare = "Text to be shared"; //Text to be shared
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_SUBJECT, textToShare);
shareIntent.setType("*/*");
shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shareIntent.putExtra(Intent.EXTRA_TEXT, imageToShare);
startActivity(Intent.createChooser(shareIntent, "Share with"));
invite.png
,它位于drawable
文件夹中。我希望以上信息有用。我还是Java的初学者,非常感谢任何帮助!
答案 0 :(得分:1)
此代码将允许您发送任何带有文本的位图图像。
Bitmap decodedByte = BitmapFactory.decodeResource(getResources(), R.drawable.refer_app);
Uri imageToShare = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), decodedByte, "Share app", null)); // in case of fragment use [context].getContentResolver()
String shareMessage = "message to share";
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/*");
share.putExtra(Intent.EXTRA_TEXT, shareMessage);
share.putExtra(Intent.EXTRA_STREAM, imageToShare);
startActivity(Intent.createChooser(share, "Share via"));
答案 1 :(得分:0)
这对我有用:
Intent iShare = new Intent(Intent.ACTION_SEND);
iShare.setType("image/*");
iShare.putExtra(Intent.EXTRA_TEXT, "Your text”);
iShare.putExtra(Intent.EXTRA_STREAM, Your image);
startActivity(Intent.createChooser(iShare, "Choose app to share photo with!"));
答案 2 :(得分:0)
首先,不要求任何应用支持通过ACTION_SEND
共享文字和图片。
其次,图片的Uri
位于EXTRA_STREAM
as notyou pointed out。
第三,很少有应用知道如何将android.resource
作为Uri
方案处理。毕竟,那不是the documented scheme for an EXTRA_STREAM
Uri
。它必须是content
,您可以通过ContentProvider
来提供内容,例如FileProvider
。
第四,如果您指定实际的MIME类型,而不是使用通配符,则可能会有更好的运气。
答案 3 :(得分:0)
我终于设法以更简单的方式做到了!我从图像中创建了一个base64
,并将其作为字符串添加到strings.xml
文件中(确保从字符串的开头删除data:image/png;base64,
)。
我使用的代码如下:
byte[] decodedString = Base64.decode(getString(R.string.share_image), Base64.DEFAULT); //The string is named share_image.
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
Uri imageToShare = Uri.parse(MediaStore.Images.Media.insertImage(MainActivity.this.getContentResolver(), decodedByte, "Share image", null)); //MainActivity.this is the context in my app.
String textToShare = "Sample text"; //Text to be shared
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/*");
share.putExtra(Intent.EXTRA_TEXT, textToShare);
share.putExtra(Intent.EXTRA_STREAM, imageToShare);
startActivity(Intent.createChooser(share, "Share with"));
我希望这个答案可以解决许多人的问题!
非常感谢@notyou& @CommonsWare