0

是否可以在 Facebook 墙上发布带有图像的消息(不是图像链接,而是图像数据)?

我在http://developers.facebook.com/docs/reference/api/post/https://developers.facebook.com/docs/guides/attachments/中都没有找到这种可能性。

我已经准备好忍受不可能做到这一点,但我遇到SLComposeViewController了 iOS 6.0 中引入的类的文档(http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Reference/SLComposeViewController_Class/Reference/参考.html)。

这个类有一个方法- (BOOL)addImage:(UIImage *)image可以完全满足我的需要。

我为 Android 编程,因此我无法使用它。但显然这种方法必须使用 facebook API。但我找不到它:与图片发布相关的所有内容都需要 url,而不是数据。

那么,在 Android 中是否可以在 Facebook 墙上发布带有图像数据的消息?

4

1 回答 1

1

编辑:我几乎用你的评论发布了答案。您可以使用类似的东西将您的 Image 从assets转换为Bitmap.

InputStream bitmap = null;

try {
    bitmap = getAssets().open("icon.png");
    bmpImageGallery = BitmapFactory.decodeStream(bitmap);
} catch (IOException e) {
    e.printStackTrace();
} finally {
    bitmap.close();
}

这就是我通过方法中的 Intent 从图库中显示图像的onActivityResult方式:

targetURI = data.getData();

try {

    bmpImageGallery = MediaStore.Images.Media.getBitmap(this.getContentResolver(), targetURI);

    // SET THE IMAGE FROM THE GALLERY TO THE IMAGEVIEW
    imgvwSelectedImage.setImageBitmap(bmpImageGallery);

} catch (FileNotFoundException e) {
    e.printStackTrace();

} catch (IOException e) {
    e.printStackTrace();
}

这是上传图片的代码:

byte[] data = null;

ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmpImageGallery.compress(CompressFormat.JPEG, 100, baos);
data = baos.toByteArray();

Bundle postImgGallery = new Bundle();

// ADD THE PHOTO DATA TO THE BUNDLE
postImgGallery.putByteArray("photo", data);

// ADD THE CAPTION FROM THE STRING finalStatusMessage TO THE BUNDLE
if (finalStatusMessage.equals(""))  {
    /*****  DO NOTHING HERE     *****/
} else {
    postImgGallery.putString("caption", finalStatusMessage);
}

Utility.mAsyncRunner.request(userID + "/photos", postImgGallery, "POST", new PhotoUploadListener(), null);

注意:在此位"caption", finalStatusMessage中,caption也可以替换为message。我从来没有看到使用其中任何一个的帖子有任何区别。但为了安全起见,请在使用前进行检查。;-)

该类用于检查上传的状态:

private class PhotoUploadListener extends BaseRequestListener   {

    @Override
    public void onComplete(String response, Object state) {
        // DISPLAY A CONFIRMATION TOAST
    }

}
于 2012-11-14T14:49:42.403 回答