java - 使用带有 Android SDK 的 Graph API 将图片上传到 Facebook

标签 java android facebook-graph-api

我正在尝试使用 graph api 将照片上传到 facebook 并不断收到 OutOfMemory 异常。 上传代码是这样的:

private void PostPhoto(SessionHandler facebook, Uri photoUri)
{
    Bundle params = new Bundle();
    ByteArrayOutputStream bos = new ByteArrayOutputStream();

    String realPath = getRealPathFromURI(photoUri); 
    Bitmap bitmap = BitmapFactory.decodeFile(realPath);

    bitmap.compress(CompressFormat.JPEG, 100, bos);

    params.putByteArray("picture", bos.toByteArray());


    try
    {
        facebook.mFacebook.request("me/photos", params, "POST");            

    } catch (FileNotFoundException fileNotFoundException)
    {

    } catch (MalformedURLException malformedURLException)
    {

    } catch (IOException ioException)
    {

    }

}

异常在 decodeFile 函数上引发,有时在调用此行时在 facebook SDK 本身中引发:

return Util.openUrl(url, httpMethod, parameters);

在请求函数中。

应用通过 ACTION_SEND Intent 获取图片 content://Uri。 getRealPathFromURI() 用于将 content://uri 转换为真实的 sdcard 路径。

有什么想法吗?

最佳答案

试试这个,它对我有用:

byte[] data = null;
try {
    ContentResolver cr = mainActivity.getContentResolver();
    InputStream fis = cr.openInputStream(photoUri);
    Bitmap bi = BitmapFactory.decodeStream(fis);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    data = baos.toByteArray();              
} catch (FileNotFoundException e) {
    e.printStackTrace();
}     
Bundle params = new Bundle(); 
params.putString("method", "photos.upload");          
params.putByteArray("picture", data);

这是使用 Rest API,facebook sdk 有调用它的方法,所以只需更改您的请求行:

facebook.mFacebook.request("me/photos", params, "POST");   

到:

facebook.mFacebook.request(params);   

希望这能解决问题。

关于java - 使用带有 Android SDK 的 Graph API 将图片上传到 Facebook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6478572/

相关文章:

java - 是否可以将电脑屏幕发送到 Android 设备?

java - 如何通过单击抽屉导航上的 ImageView 来获取用户个人资料图片,从图库中选择图像

facebook - 如何在 facebook 故事中嵌入自定义媒体播放器 (js/firame)?

javascript - Facebook 循环返回的 JSON Open Graph 请求

java - 在桌面应用程序中加载网页

java - TeeChart 轮廓线颜色

java - 如何明智地阅读大字符串 block ?

java - 错误 : JAVA_HOME is set to an invalid directory:/usr/lib/jvm/java-8-oracle/jre/bin/java when i run gradle command in terminal

android - 删除谷歌日历中的单次事件

android - 如何注销并使用另一个 Facebook 帐户登录