在Twitter上使用SHARE INTENT分享文本和图片的问题

22

我希望能够让用户在Twitter和Facebook上分享图片和文字。

目前我的代码可以启动Android的分享意图,如果用户选择了Facebook,一切都正常,图片被附加并且文本显示在新状态的正文中。

但是对于Twitter,出现了问题。如果我只放置一张图片,一切都正常,Twitter会检测到这张图片并自动上传到Twipic,然后在推文中发布该图片的链接。但是如果我同时放置一张图片和一段文字,则Twitter无法检测到图片,仅将文本放在推文中,而忽略了图片。这是怎么回事?

以下为我的代码:

Intent sharingIntent = new Intent(Intent.ACTION_SEND);
Uri screenshotUri = Uri.parse("file:///sdcard/image.jpg");
sharingIntent.setType("image/*");
sharingIntent.putExtra(Intent.EXTRA_TEXT, "Body text of the new status");
sharingIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri);
startActivity(Intent.createChooser(sharingIntent, "Share image using"));

请看这篇文章: https://dev59.com/g3I95IYBdhLWcg3w8y6N#9151983 - Derzu
2个回答

24

你仍可以尝试使用ACTION_SEND,而不使用ACTION_SEND_MULTIPLE

当我尝试创建新的意图以分享到Gmail、G+等应用时,ACTION_SEND_MULTIPLE导致了强制关闭。

这对我来说完美地解决了问题:

    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    Uri uri = Uri.parse("file:///sdcard/image.jpg");
    shareIntent.setType("*/*");
    shareIntent.putExtra(Intent.EXTRA_TEXT, "Body text of the new status");
    shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
    return shareIntent; 

你如何构建URI? - Radu
2
@ Paschalis:我尝试了你的代码,但是当我与Facebook分享时,它会给我一个像“请仅附加照片或单个视频”的提示。你有什么想法如何解决它吗? - Harshal Kalavadiya
嗨@HarshalKalavadiya。我几乎记不起我为什么需要这个了。 你确定已经设置了通用类型“*/*”吗? - Paschalis
@ Paschalis 是设置了通用类型为 "*/*" - Harshal Kalavadiya

15

对于文本数据,请指定MIME类型。 "text/plain"是文本数据MIME的类型。尝试使用"*/*"作为MIME类型,这样您就可以发送任何通用数据类型。

另外,请尝试将ACTION_SEND更改为ACTION_SEND_MULTIPLE,这专门用于传递多个数据。

有关ACTION_SEND_MULTPLE和处理MIME类型的更多信息:

http://developer.android.com/reference/android/content/Intent.html


我尝试使用 */*,但不起作用。我无法使用 ACTION_SEND_MULTIPLE,因为它不存在,至少在 Android 1.5 上不存在。 - NullPointerException
1
现在我尝试使用ACTION_SEND_MULTIPLE和Android 4 API,但它不起作用。 - NullPointerException
请调查一下 Twitter 应用程序是否可以向其 API 发送多个数据请求...它能与 Facebook 应用程序配合使用吗? - Nikola Despotoski
3
使用ACTION_SEND和image/*作为类型已经使其工作(在Android 4.0上,需要测试更低的API版本,但希望仍然能够正常工作)。 - brk3
@brk3,我在进行这个操作时遇到了“无法加载图像”的错误。你能给我建议吗? - hemanth kumar

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