android - 通过 Intent 分享图片(Facebook 等)

标签 android facebook android-intent

我浪费了很多时间,试图通过共享 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);

在第一个代码 fragment 中。当我尝试时它就在那里,但也没有用。 太久没睡了...

最佳答案

我认为这会回答您的问题。 https://stackoverflow.com/a/3553102/478537

看起来你走在正确的道路上,我所看到的是,在你的第一个代码 fragment 中,你没有在任何地方使用 picUri,因此它没有被发送,而在第二个代码 fragment 中,你正在设置 EXTRA_STREAM两次(这不会导致任何问题,只会导致冗余代码)。

关于android - 通过 Intent 分享图片(Facebook 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9973338/

相关文章:

android - 使用 Robolectric 在 Android Studio 中测试应用程序

java - 在应用程序中的任何设备上使用相同的 SQLite 数据库数据

ios - Facebook App邀请通知问题

android - 如何在 android Activity 完成后刷新 fragment ?

android - 使用存储访问框架打开特定目录

android - 无法在 xamarin 中的 android Activity 之间传递数据

android - Gradle 同步失败 : Argument for @NotNull parameter 'aFileName' of com/intellij/openapi/util/io/FileUtil. toSystemIndependentName 不能为空

android - 无法解析方法 .runOnUiThread

Facebook 在处理 oauth 请求时生成 "An error occurred. Please try later"

javascript - 是否可以实现 'Continue as {Facebook user name}' 按钮?