【问题标题】:How to post image from drawable folder to facebook with graph api?如何使用图形 api 将可绘制文件夹中的图像发布到 facebook?
【发布时间】:2012-09-06 08:20:32
【问题描述】:

我想使用他们的图形 API 将图像发布到 facebook。但我的图像在可绘制文件夹中。到目前为止:

public static void postToFacebook() {

    Bundle params = new Bundle();

    // shared with this
    params.putString("caption", activityContext.getString(R.string.app_name));
    // description of the program
    params.putString("description", "bla bla bla bla bla bla"); 
    // header of the description
    params.putString("name", "train");
    // callback url
    params.putString("link","http://www.google.com.tr");
    // put a personal message
    params.putString("message", "my message");
    // to put a photo
    params.putByteArray("picture", getImageAsData());

    try {
        String response = FacebookUtility.mFacebook.request("/me/feed",
                params, "POST");
        if (response == null || response.equals("")
                || response.equals("false"))
            Toast.makeText(activityContext, "Error.",
                    Toast.LENGTH_SHORT).show();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

}

public static byte[] getImageAsData() {

Drawable d = activityContext.getResources().getDrawable(R.drawable.icon);
Bitmap bitmap = ((BitmapDrawable) d).getBitmap();
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
    byte[] bitmapdata = stream.toByteArray();
    return bitmapdata;
}

但这不起作用......它没有发布我的图标,但它从网站获取谷歌图标。我尝试注释掉链接部分,但这次它只发送消息。

我也尝试将位图设置为:

Bitmap bitmap = BitmapFactory.decodeResource(activityContext.getResources(), R.drawable.icon);

但这也没有成功。

我见过:

Bitmap bi = BitmapFactory.decodeFile(pathonsdcard);

但我无法使用此方法获取位图,因为我没有 pathonsdcard?

有什么建议吗? 那么如何发布位于 res/drawable 文件夹中的图像呢? 提前致谢。

【问题讨论】:

    标签: android facebook facebook-graph-api bitmap


    【解决方案1】:

    这是从可绘制对象上传照片的正确方法。请注意,您需要的唯一参数是“照片”和“标题”。

    Bundle params = new Bundle();
    params.putByteArray("photo", getImageAsData());
    params.putString("caption", "Test caption lololol");
    mAsyncRunner.request("me/photos", params, "POST", new PhotoUploadListener(), null);
    

    【讨论】:

    • 但我不想只发布照片,我还需要一些关于我的应用程序和用户评论的信息。所以我不能使用“我/照片”...
    • 那么您需要 POST 给我/提要,但使用“图片”参数提供 URL 而不是字节数组。然后,您可以使用“标题”、“描述”、“名称”和“消息”参数自定义帖子。
    • 在我的问题中已经是这样了...但问题是我想从 drwable 文件夹发送图片,我没有此图片的任何 url...
    【解决方案2】:
    Bundle b=new Bundle();
    b.putString("Picture","// Byte array value of ur image");
    
    facebook.request("username/photos",b,"POST");
    

    【讨论】:

    【解决方案3】:

    您可以直接将图像从drawable 获取到位图,然后将其转换为bytearray,而不是使用BitmapDrawable。有时 bitmapdrawable 会导致意想不到的问题。

    Bitmap bitmap = BitmapFactory.decodeResource(ctx.getResources(),
    R.drawable.image);
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
    byte[] bitMapData = stream.toByteArray();
    

    现在用这个来发帖——

    parameters.putByteArray("picture", bitMapData);
    mAsyncFbRunner.request("me/feed", params, "POST", new WallPostListener());
    

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 2012-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-31
      相关资源
      最近更新 更多