2011-12-21 46 views
0

在My Appplication中,我使用此代碼在Facebook上發佈照片。Android:如何在Facebook上發佈圖片信息?

代碼:

// For Facebook =================================== 
      Button facebookButton = (Button) saveButtonDialog.findViewById(R.id.facebook); 
      facebookButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        saveButtonDialog.dismiss(); 

        saveImageFunction(); // to save the Image 

        facebook.authorize(TWSBIDrawMainActivity.this, new String[]{ "user_photos,publish_checkins,publish_actions,publish_stream"},new DialogListener() {      
         @Override      
         public void onComplete(Bundle values) { 
          postImageonWall(); 
          Toast.makeText(getApplicationContext(), "Image Posted on Facebook.", Toast.LENGTH_SHORT).show(); 

         }      
         @Override      
         public void onFacebookError(FacebookError error) {      
         }      
         @Override      
         public void onError(DialogError e) {      
         }      
         @Override      
         public void onCancel() {      
         }     
        }); 
       } 
      }); 



public void postImageonWall() {    
    byte[] data = null;    

    Bitmap bi = BitmapFactory.decodeFile(APP_FILE_PATH + "/"+filename+".jpg"); 
    //Bitmap bi = BitmapFactory.decodeResource(getResources(), R.drawable.icon);    
    ByteArrayOutputStream baos = new ByteArrayOutputStream();    
    bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);    
    data = baos.toByteArray();     
    Bundle params = new Bundle();    
    params.putString(Facebook.TOKEN, facebook.getAccessToken());    
    params.putString("method", "photos.upload");    
    params.putByteArray("picture", data);    
    AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook);    
    mAsyncRunner.request(null, params, "POST", new SampleUploadListener(), null);  

現在我能張貼此代碼的照片。 但現在我想發佈此照片帖子的消息。那我還有什麼要做的?

請幫我解決這個問題。 謝謝。

+0

你想發送帶圖像的信息。 並在自己的牆上和朋友的牆上。 – 2011-12-21 04:26:32

+0

請檢查這個問題,我希望你能解決這個問題:http://stackoverflow.com/questions/18657388/how-to-allow-user-to-post-an-image-on-wall-using-sdcard-文件夾 – Sun

回答

5

只需要爲Bunlde對象參數添加一個額外的參數即可。這是笏我做,

Bundle params = new Bundle();    
params.putString(Facebook.TOKEN, facebook.getAccessToken());    
params.putString("method", "photos.upload");    
params.putByteArray("picture", data);  

params.putString( 「標題」,facebook_comment);

AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook);    
mAsyncRunner.request(null, params, "POST", new SampleUploadListener(), null); 

我認爲你缺少這一行。

+0

好的感謝您的答覆。我來檢查一下。 –

+0

感謝它的工作。 –

+0

歡迎總是.. –

3
private String postwall(String uid) 
    { 
     String response = ""; 
     try 
     { 

      String DIRECTORY_PATH = "/sdcard/159.jpg"; 
      Bundle params = new Bundle(); 
      Bitmap bitmap = BitmapFactory.decodeFile(DIRECTORY_PATH); 
      byte[] data = null; 
      ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
      bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
      data = baos.toByteArray(); 
      params.putString("app_id", uid); 
      params.putString("message", "picture caption"); 
      params.putByteArray("picture", data); 

      mFacebook.authorize(this, PERMISSIONS, new LoginDialogListener()); 
      mAsyncRunner.request("me/photos", params, "POST", new WallPostRequestListener()); 
      mAsyncRunner.request(response, new WallPostRequestListener()); 
      Log.e("post result", response); 

     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
     return response; 
    } 

    public class WallPostRequestListener extends BaseRequestListener 
    { 

     public void onComplete(final String response) 
     { 
      Log.d("Facebook-Example", "Got response: " + response); 
      String message = "<empty>"; 
      try 
      { 
       JSONObject json = Util.parseJson(response); 
       message = json.getString("message"); 
      } 
      catch (JSONException e) 
      { 
       Log.w("Facebook-Example", "JSON Error in response"); 
      } 
      catch (FacebookError e) 
      { 
       Log.w("Facebook-Example", "Facebook Error: " + e.getMessage()); 
      } 
      final String text = "Your Wall Post: " + message; 

     } 
    } 
+0

這是工作代碼,我能夠張貼我的照片和消息從我的SD卡面對書牆....... – Sock

+0

謝謝。但我已經接受了答案。它的工作原理。 –

相關問題