首先下载此Facebbok SDK 并将其作为库项目包含在您的项目中。
在您的活动中,您想在哪里分享图片 ::
private static Bitmap b;
private static Facebook mFacebook;
private static AsyncFacebookRunner mAsyncRunner;
String[] permissions = {"photo_upload" };
final static int AUTHORIZE_ACTIVITY_RESULT_CODE = 0;
在 onCreate() 中初始化这个变量::
if (Constant.FACEBOOK_APP_ID == null)
{
Util.showAlert(this, "Warning", "Facebook Applicaton ID must be "
+ "specified before running this example: see FbAPIs.java");
return;
}
mHandler=new Handler();
mFacebook = new Facebook(Constant.FACEBOOK_APP_ID);
mAsyncRunner = new AsyncFacebookRunner(mFacebook);
SessionStore.restore(mFacebook, this);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
switch (requestCode)
{
case AUTHORIZE_ACTIVITY_RESULT_CODE:
{
mFacebook.authorizeCallback(requestCode, resultCode, data);
break;
}
}
}
onButtonClick 从您要分享图片的地方::
if (!mFacebook.isSessionValid())
{
mFacebook.authorize(TabNoteActivity.this, permissions, AUTHORIZE_ACTIVITY_RESULT_CODE, new LoginDialogListener());
}
else
{
Bundle params = new Bundle();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
Utils.b.compress(Bitmap.CompressFormat.PNG, 100, stream);//Here I am convert the JPG image into bitmap using declaring method in the Utils class
byte[] byteArray = stream.toByteArray();
params.putString (Facebook.TOKEN, mFacebook.getAccessToken());
params.putString ("message"," Facebook App Testing");
params.putByteArray("picture",byteArray);
mAsyncRunner.request("me/photos", params,"POST", new PhotoUploadListener(),null);
}
public class PhotoUploadListener extends BaseRequestListener
{
//@Override
public void onComplete(final String response, final Object state)
{
mHandler.post(new Runnable()
{
// @Override
public void run()
{
Toast.makeText(Activity.this,"Image has been shared Successfully",Toast.LENGTH_LONG).show();
}
});
}
public void onFacebookError(FacebookError error)
{
Toast.makeText(getApplicationContext(), "Facebook Error: " + error.getMessage(),Toast.LENGTH_LONG).show();
}
}