2012-01-21 1 views
5

으로 게시 할 수 있는지 알고 싶습니다. 그렇다면 내 이미지에 URL을 지정하는 대신 원시 이미지 데이터를 전송할 수있는 방법을 알고 싶습니다. 페이스 북의 벽?URL 대신 원시 이미지 데이터를 Android Facebook SDK

작업 코드 나는 현재이 결과를 가지고 :

http://1.bp.blogspot.com/-klSLFEmvHy0/TxpPMIay0xI/AAAAAAAAAKQ/iLZv-QtmThc/s1600/fbpost.JPG (미안 내가 :-) 그래서 URL을 열고 사진을하시기 바랍니다 포함하기에 충분한 크레딧이없는 내가 원하는 moreorless입니다

내 궁극적 인 목표는 위에 표시된 심장 모양의 이미지를 사용자가 Facebook에 결과를 게시하기로 결정할 때마다 내 앱에서 생성하는 출력물로 출력하는 것입니다 (콘텐츠는 영상). 제 3 자 서버를 업로드 한 다음 해당 URL을 공유하는 것을 구현하고 싶지 않습니다.

나는 다음과 같은 코드를 참조 사람들의 주위에 본 적이 :

... 
    byte[] data = null; 
    Bitmap bi = BitmapFactory.decodeFile(imagePath); 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    bi.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
    data = baos.toByteArray(); 
    params.putByteArray(... 

하지만 나도 원하는 것이 아니다 앨범에 직접 사진을 업로드 할 것으로 보인다.

내 작업 코드는 지금까지입니다 내 이해에서

private void loginAndPostToFacebook() { 
    mFacebook = new Facebook(FACEBOOK_APP_ID); 

    mFacebook.authorize(this, new String[] { "publish_stream" }, new DialogListener() { 
     @Override 
     public void onComplete(Bundle values) { 
      postOnWall(); 
     } 

     @Override 
     public void onFacebookError(FacebookError error) { 
      L.t(getString(R.string.error_facebook_error) + ": " + error.getMessage()); 
     } 

     @Override 
     public void onError(DialogError e) { 
      L.t(getString(R.string.error_facebook_error) + ": " + e.getMessage()); 
     } 

     @Override 
     public void onCancel() { 
     } 
    }); 
} 

public void postOnWall() { 
    Bundle params = new Bundle(); 

    // Message 
    params.putString("message", "my msg"); 

    // Name 
    params.putString("name", "app name"); 

    // Caption 
    params.putString("caption", "caption"); 

    // Description 
    params.putString("description", "description"); 

    // Here's where I'd insert my dynamically generated image data...  
    params.putString("picture", "http://4.bp.blogspot.com/-VaNzm3xMOtk/TxpKzhxpdEI/AAAAAAAAAKI/08Kc5b4HW0Q/s1600/sexometer128x128neutral_icon.png");   

    // Link 
    params.putString("link", "http://www.stackoverflow.com"); 

    try { 
     String response = mFacebook.request("me"); 
     response = mFacebook.request("me/feed", params, "POST"); 
     if (response == null || response.equals("") || response.equals("false")) { 
      L.t(getString(R.string.error_facebook_error) + ": blank response"); 
      return; 
     } else if (response.toLowerCase().contains("error")) { 
      L.t(getString(R.string.error_facebook_error) + ": " + response); 
      return; 
     } 
    } catch(Exception e) { 
     L.t(getString(R.string.error_facebook_error) + ": " + e.getMessage()); 
     return; 
    } 

    L.t(getString(R.string.success_posted_to_facebook)); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (mFacebook != null) { 
     mFacebook.authorizeCallback(requestCode, resultCode, data); 
    } 
} 

답변