通过 Intent(Facebook 和 co)分享图片
Posted
技术标签:
【中文标题】通过 Intent(Facebook 和 co)分享图片【英文标题】:share picture via Intent (Facebook and co) 【发布时间】:2012-04-15 22:20:32 【问题描述】:我浪费了很多时间,试图通过共享 Intent 共享一个简单的 jpeg 图像。
像往常一样最重要的是Facebook,而且像往常一样不起作用。
Intent shareIntent = new Intent(Intent.ACTION_SEND);
Uri picUri = Uri.parse("http://someserver.com/somepic.jpg");
shareIntent.setType("image/jpeg");
shareIntent.putExtra(Intent.EXTRA_STREAM, picUri);
shareIntent.putExtra(Intent.EXTRA_TEXT, someString);
startActivity(Intent.createChooser(shareIntent, "some text..."));
选择器打开得很好,Facebook 也打开并让我登录,但它告诉我上传失败。 我也尝试过 Flicker 和 Mail,但都失败了。 然后我尝试将图像写入本地文件并从那里发送,也失败了:
Drawable dr = ImageLoader.getDrawable(url);
Bitmap bmp = ((BitmapDrawable)dr).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 80, stream);
byte[] data = stream.toByteArray();
FileOutputStream ostream;
try
ostream = this.openFileOutput("pic.jpeg", Context.MODE_WORLD_READABLE);
ostream.write(data);
catch (Exception e)
e.printStackTrace();
Uri picUri = Uri.fromFile(new File("pic.jpeg"));
shareIntent.putExtra(Intent.EXTRA_STREAM, picUri);
我不知道我这样做是否正确,以前没有这样做过。
我最后一次尝试是发送一个 html 字符串,其中包含图像作为 img 标记。但 Facebook 似乎不处理类型“text/html”,所以它不是一个选项。 我确信它只需要几行代码。但是哪些?
编辑
我忘记了线路
shareIntent.putExtra(Intent.EXTRA_STREAM, picUri);
在第一个代码 sn-p 中。当我尝试时它在那里,也没有工作。 太久没睡……
【问题讨论】:
你有没有找到一种合理的方式来分享来自 URL 的图片? 您好 didi_X8,您找到解决此问题的方法了吗?因为我也被困住了 【参考方案1】:我认为这将回答您的问题。 https://***.com/a/3553102/478537
看起来您走在正确的道路上,我只能看到在您的第一个代码 sn-p 中,您没有在任何地方使用 picUri,因此它没有被发送,而在第二个代码中,您正在设置EXTRA_STREAM 两次(不会导致任何问题,只是冗余代码)。
【讨论】:
sry,太久以前...谢谢,我不需要使用 FB 的东西 atm,因此我不会检查这是否有效。也许有一天我会再次需要它。还是谢谢【参考方案2】:..Intent.EXTRA_TEXT, someString
。
这将使您与 Facebook 的交易失败——不是“someString”——Facebook 共享需要并搜索通过 EXTRA_TEXT 传输的 URL。为什么-不要问..我不明白这些人
【讨论】:
【参考方案3】:好吧,我花了很多时间,问题是文件的扩展名(png有问题所以在这种情况下忽略文件扩展名并使用“jpg”),试试下面的代码
public static void shareImageFileWithIntent(File imageFile, Context context)
MimeTypeMap mime = MimeTypeMap.getSingleton();
String type = mime.getMimeTypeFromExtension("jpg");
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType(type);
sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(imageFile));
sharingIntent.putExtra(Intent.EXTRA_TEXT, "your extra text");
sharingIntent.putExtra(Intent.EXTRA_SUBJECT, "your subject");
context.startActivity(Intent.createChooser(sharingIntent, context.getString(R.string.share_image_intent)));
【讨论】:
【参考方案4】:您可以创建一个新类并将其从一个活动中保存,而不是通过意图传递图像。并从另一个活动中访问该图像。
【讨论】:
看起来更像是评论而不是答案。以上是关于通过 Intent(Facebook 和 co)分享图片的主要内容,如果未能解决你的问题,请参考以下文章
使用 Android 分享 Intent 在 Facebook 上分享视频