2012-06-15 39 views
1

可能重複:
Android post picture to Facebook wall如何發佈圖片至Facebook的Android應用

我是新來Facebook的Android SDK中。我已經添加了SDK作爲Android項目的eclipse。在我的應用程序中有一個圖像和一個按鈕。我想要按下按鈕時將圖像上傳到Facebook。我已閱讀過SO上的各種帖子。但我無法弄清楚如何去做。任何幫助?

+0

[你試過這個嗎?](http://stackoverflow.com/a/5168523/940096) – Praveenkumar

+1

你累了什麼? – Aerrow

+0

@SpK在上面的鏈接中,在接受的答案中,很多代碼都丟失了,你能幫我弄清楚如何實現圖表api –

回答

0

嘗試用這個,

Button mButton=(Button)findViewById(R.id.button); 

mButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      Facebook mFacebook=new Facebook(yourAppID) 

    byte[] data = null; 
    Bitmap bi = BitmapFactory.decodeFile(imageLink); 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    bi.compress(Bitmap.CompressFormat.PNG, 100, baos); 
    data = baos.toByteArray(); 

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

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

public class SampleUploadListener extends BaseRequestListener { 

    @SuppressWarnings("unused") 
    public void onComplete(final String response, final Object state) { 
     try { 
      Log.d("Facebook-Example", "Response: " + response.toString()); 
      JSONObject json = Util.parseJson(response); 
      String src = json.getString("src"); 

      PublishImage.this.runOnUiThread(new Runnable() { 
       public void run() { 
        Toast.makeText(getApplicationContext(), 
          "Successfully Uploaded", Toast.LENGTH_SHORT) 
          .show(); 
       } 
      }); 
     } catch (JSONException e) { 
      Log.w("Facebook-Example", "JSON Error in response"); 
     } catch (FacebookError e) { 
      Log.w("Facebook-Example", "Facebook Error: " + e.getMessage()); 
     } 
    } 
} 

public abstract class BaseRequestListener implements RequestListener { 

    public void onFacebookError(FacebookError e, final Object state) { 
     Log.e("Facebook", e.getMessage()); 
     e.printStackTrace(); 
    } 

    public void onFileNotFoundException(FileNotFoundException e, 
      final Object state) { 
     Log.e("Facebook", e.getMessage()); 
     e.printStackTrace(); 
    } 

    public void onIOException(IOException e, final Object state) { 
     Log.e("Facebook", e.getMessage()); 
     e.printStackTrace(); 
    } 

    public void onMalformedURLException(MalformedURLException e, 
      final Object state) { 
     Log.e("Facebook", e.getMessage()); 
     e.printStackTrace(); 
    } 

} 
+0

已經放置在eventlistener的onclick方法中了嗎?另外,它似乎需要某種會話。如何開始會話 –

+0

我在我的代碼中進行了更改,將其放在您的onclick方法中。 – Aerrow

+0

它在FaceBookLoginPage和SampleUploadListener上顯示錯誤 –

0

商店你在一個位圖圖像。並使用下面的代碼。

HttpClient httpClient = new DefaultHttpClient(); 
HttpContext localContext = new BasicHttpContext(); 
HttpPost httpPost = new HttpPost(
     "https://graph.facebook.com/me/photos?access_token=" 
       + AccessTokens.fbaccesstoken); 
MultipartEntity entity = new MultipartEntity(
     HttpMultipartMode.BROWSER_COMPATIBLE); 
ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
bitmap.compress(CompressFormat.JPEG, 100, bos); 
byte[] data = bos.toByteArray(); 
entity.addPart("source", new ByteArrayBody(data, "myImage.jpg")); 
entity.addPart("message", new StringBody(caption.getText() 
     .toString())); 
httpPost.setEntity(entity); 
HttpResponse response = httpClient.execute(httpPost,localContext);