package com.example.singleactivityapp.Utils; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.Toast; import com.facebook.FacebookException; import com.facebook.FacebookOperationCanceledException; import com.facebook.Session; import com.facebook.UiLifecycleHelper; import com.facebook.widget.FacebookDialog; import com.facebook.widget.WebDialog; import com.facebook.widget.WebDialog.OnCompleteListener; public class FacebookUtils { public static void postOnWall(Activity activity, String name, String description, String link) { Session session = Session.getActiveSession(); if(session == null) { // No Active Facebook Session present. Show toast and return. Toast.makeText(activity, "You haven't logged in to Facebook", Toast.LENGTH_SHORT).show(); return; } if (FacebookDialog.canPresentShareDialog(activity, FacebookDialog.ShareDialogFeature.SHARE_DIALOG)) { // Publish the post using the Share Dialog showShareDialog(activity, name, description, link); } else { // Publish the post using the Feed Dialog showFeedDialog(activity, name, description, link); } } private static void showShareDialog(Activity activity, String name, String description, String link) { UiLifecycleHelper uiHelper = new UiLifecycleHelper(activity, null); FacebookDialog.ShareDialogBuilder shareDialogBuilder = new FacebookDialog.ShareDialogBuilder(activity); shareDialogBuilder.setName(name); shareDialogBuilder.setCaption("Single Activity App"); shareDialogBuilder.setDescription(description); if(link != null) { shareDialogBuilder.setLink(link); } FacebookDialog shareDialog = shareDialogBuilder.build(); uiHelper.trackPendingDialogCall(shareDialog.present()); } private static void showFeedDialog(final Activity activity, String name, String description, String link) { Bundle params = new Bundle(); params.putString("name", name); params.putString("caption", "Single Activity App"); params.putString("description", description); if(link != null) { params.putString("link", link); } WebDialog feedDialog = (new WebDialog.FeedDialogBuilder(activity, Session.getActiveSession(), params)).setOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(Bundle values, FacebookException error) { if (error == null) { final String postId = values.getString("post_id"); if (postId != null) { Log.d("", "Posted story, id: "+postId); } else { Log.d("", "Publish cancelled"); } } else if (error instanceof FacebookOperationCanceledException) { Log.d("", "Publish cancelled"); } else { Log.d("", "Error posting story"); } } }).build(); feedDialog.show(); } }