2013-05-08 45 views
1

我已經使用Facebook SDK完成了文本共享。我被困在從SD卡上傳圖片。在將圖像解析爲FB SDK之前,首先將圖像轉換爲位圖,然後我應該與Facebook共享。但是這個邏輯不起作用。它永遠不會從SD卡上傳圖像。任何人都可以指導我如何從SD卡上傳圖片?提前致謝。如何從SD卡上傳圖片到facebook

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); 
+0

請參閱http://stackoverflow.com/questions/8710515/reading-an-image-file-into-bitmap-from-sdcard – ozbek 2013-05-08 06:42:43

+0

可以請您分享fb共享的其餘代碼。我需要做同樣的工作,仍然沒有得到解決方案 – 2014-01-22 02:03:04

回答

0

嘗試。

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

從SD卡獲取圖像並轉換爲byteArray。

然後使用此功能在臉書上分享圖片。

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軟件包。

+0

謝謝它工作正常。現在我可以分享來自SD卡的圖像。 – RAAAAM 2013-05-22 07:20:30

+0

對話框打開,登錄後圖像不張貼。當我調試它。光標不會完成。你可以共享完整的代碼登錄和分享fb圖像。或任何提示來解決我的問題。 – 2014-01-21 15:45:17

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);