通过 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 上分享视频

如何通过 Android 应用在 Facebook 上分享我的位置?

iOS:通过分页获取 Facebook 好友

iOS:使用“下一个”通过分页获取 Facebook 好友

Intent Action 大全

如何通过 Intent 从自定义 Android 应用程序启动 Lync 客户端?