2012-01-21 38 views
5

Tôi muốn biết nếu có thể và nếu như vậy cách tôi có thể truyền dữ liệu hình ảnh thô thay vì chỉ định URL cho hình ảnh trên web khi đăng lên Facebook tường?Đăng dữ liệu hình ảnh thô thay vì URL tới bằng Android SDK của Facebook

Mã làm việc Tôi hiện có kết quả trong việc này:

http://1.bp.blogspot.com/-klSLFEmvHy0/TxpPMIay0xI/AAAAAAAAAKQ/iLZv-QtmThc/s1600/fbpost.JPG (xin lỗi tôi không có đủ tín dụng để nhúng hình ảnh để mở URL xin :-)

Đó là những gì tôi muốn moreorless với mục tiêu, tiêu đề, liên kết ... nhưng mục tiêu cuối cùng của tôi là làm cho hình ảnh hình trái tim hiển thị ở trên là hình ảnh được tạo ra mà ứng dụng của tôi tạo mỗi khi người dùng quyết định đăng kết quả lên Facebook (nội dung được tạo động trên hình ảnh). Tôi không muốn triển khai tải lên một số máy chủ của bên thứ ba và sau đó chia sẻ URL đó.

Tôi đã nhìn thấy xung quanh mọi người đề cập đến mã như thế này:

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

nhưng điều đó có vẻ là để tải ảnh trực tiếp vào một album mà không phải là những gì tôi muốn một trong hai.

mã làm việc của tôi cho đến nay là:

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

Trả lời

Các vấn đề liên quan