Search code examples
androidfacebookfacebook-graph-apifacebook-android-sdkfacebook-wall

How do I simply share content on Facebook wall using its Android SDK?


I cannot find many examples of the FB + Android SDK and the samples are not simple enough(some of them are deprecated). My simple goal is to share some content on FB using my Android app. When I developed the iOS app it was simply

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate facebookLogin];


NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                               @"pikSpeak", @"name",
                               shareURL, @"link",
                               @"pikSpeak for iPhone !", @"caption",
                               @"Record audio at the moment of the image taken using pikSpeak and feel the moment come alive", @"description",
                               @"shared an audible pic using pikSpeak cam", @"message",
                               imageURL,@"picture",
                               nil];

[[appDelegate facebook] requestWithGraphPath:@"feed" andParams:params andHttpMethod:@"POST" andDelegate:self];

This code handled the sessions and saving the session details over app restarts.

1) How to simply share some thing in Android.

2) I saw Facebook(String app_id) is deprecated. If so, then what is its replacement?

P.S. : Using Facebook 3.0 SDK


Solution

  • Taken from Share on User's Wall using Facebook SDK:

    private void share() {
        Bundle bundle = new Bundle();
        bundle.putString("caption", "Harlem Shake Launcher for Android");
        bundle.putString("description", "Your android can do the Harlem Shake. Download it from google play");
        bundle.putString("link", "https://play.google.com/store/apps/details?id=mobi.shush.harlemlauncher");
        bundle.putString("name", "Harlem Shake Launcher");
        bundle.putString("picture", "http://shush.mobi/bla.png");
        new WebDialog.FeedDialogBuilder(mContext, mySession, bundle).build().show();
    }
    

    If you need to login (add this in you activity wherever you need to login/share):

    Session.openActiveSession(this, true, new Session.StatusCallback() {
    
        @Override
        public void call(Session session, SessionState state, Exception exception) {
            if(session.isOpened()) {
                share();
            }
        }
    });
    

    You will need to add to your activity:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch(requestCode) {
        default:
            if(Session.getActiveSession() != null) //I need to check if this null just to sleep peacefully at night
                Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
            break;
        }
    }