1

我已经使用 Facebook SDK 完成了文本共享。我被困在从 SD 卡上传图像。在将图像解析为 FB SDK 之前,首先我将图像转换为位图,然后我应该与 Facebook 共享。但是这个逻辑是行不通的。它从不从 SD 卡上传图像。谁能指导我如何从 SD 卡上传图像?提前致谢。

Bitmap bi = BitmapFactory.decodeStream(fis);
Bitmap bi =BitmapFactory.decodeFile(Environment.getExternalStorageDirectory() +"/Android/test.jpg", options);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);
4

2 回答 2

1

试试下面的代码,并检查你的位图不应该为空..

Bundle bundle = new Bundle();
bundle.putString("message", "post image.." );

byte[] data = null;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
<<your bitmap>>.compress(Bitmap.CompressFormat.JPEG, 100, baos);
data = baos.toByteArray();

bundle.putString(Facebook.TOKEN, facebook.getAccessToken());
bundle.putString("method", "photos.upload");
bundle.putByteArray("picture", data);
bundle.putString("message", "post image.." );

mAsyncRunner.request(null,bundle,"POST",new RequestListener() {
    @Override
    public void onMalformedURLException(MalformedURLException e, Object state) {
      Log.d("request RequestListener", "debug onMalformedURLException");
    }
    @Override
    public void onIOException(IOException e, Object state) {
  Log.d("request RequestListener", "debug onIOException");
    }
    @Override
    public void onFileNotFoundException(FileNotFoundException e, Object state) {
  Log.d("request RequestListener", "debug onFileNotFoundException");
    }
    @Override
    public void onFacebookError(FacebookError e, Object state) {
  Log.d("request RequestListener", "debug onFacebookError");
    }
    @Override
    public void onComplete(String response, Object state) {
   Log.d("request RequestListener", "debug onComplete");
    }
}, null);
于 2013-05-08T06:45:41.197 回答
0

尝试这个。

 private Facebook facebook = new Facebook("319*********897");
 byte[] byteArray;

从 SD 卡获取图像并转换为 byteArray。

然后使用此功能在 facebook 上分享图像。

 public void shareOnFacebook() {
    // mDuckHuntView.pause();

    facebook.authorize(this, new String[] { "publish_stream",
            "user_photos", "publish_checkins", "publish_actions" },
            new DialogListener() {
                public void onComplete(Bundle values) {
                    try {

                        Bundle bundle = new Bundle();
                        bundle.putString(
                                "name",
                                "text here");
                        bundle.putByteArray("file", byteArray);
                        bundle.putByteArray(Facebook.TOKEN, values
                                .getString(Facebook.TOKEN).getBytes());
                        String response = facebook.request("me/photos",
                                bundle, "POST");

                        Log.d("UPDATE RESPONSE", "" + response);
                        JSONObject json = Util.parseJson(response);
                        if (!json.isNull("id")) {
                            // err("Facebook Image link submitted.");

                        } else {
                            // err("Facebook Error: " + response);
                        }

                    } catch (Exception e) {


                    } catch (FacebookError e) {

                    }
                }

                public void onFacebookError(FacebookError e) {

                }

                public void onError(DialogError e) {

                }

                public void onCancel() {

                }

            });
}

为此,您需要使用 facebook sdk 包。

于 2013-05-08T07:52:18.293 回答