Friday 23 May 2014

facebook Post Status From Android


You can download facebook sdk .

https://www.dropbox.com/s/5woagok3tvq2pui/FacebookSDK.rar

private void FaceBook_Sharing()
{
final Bundle params = new Bundle();




params.putString("name", "Title");
params.putString("description","Description");

params.putString("picture","Image Url");


if (Session.getActiveSession() == null|| Session.getActiveSession().isClosed())
{
Session.openActiveSession(this, true, new StatusCallback() 
{
private List<String> permissions;

@SuppressWarnings("deprecation")
@Override
public void call(Session session, SessionState state,Exception exception)
{




System.out.println("State= " + session.isOpened());

if (session.isOpened()) 
{
try 
{
permissions = session.getPermissions();
if (!permissions.contains("publish_actions")) {
Log.i("System out","come for permition in");
Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(MainActivity.this, Arrays.asList("",""))
.setDefaultAudience(SessionDefaultAudience.FRIENDS);
//session.requestNewPublishPermissions(newPermissionsRequest);
}
}
catch (Exception e)
{
// TODO: handle exception
}

Log.i("System out","come for permition else");

System.out.println("Token=" + session.getAccessToken());



facebook.setAccessToken(session.getAccessToken());

session  = Session.getActiveSession();



WebDialog feedDialog = (new WebDialog.FeedDialogBuilder(MainActivity.this,session,params)).setOnCompleteListener(new OnCompleteListener() 
{

@Override
public void onComplete(Bundle values,FacebookException error)
{
if (error == null)
{
// When the story is posted, echo the success
// and the post Id.
final String postId = values.getString("post_id");
if (postId != null) {

Toast.makeText(MainActivity.this, "Posted  successfully.", Toast.LENGTH_LONG).show();

}
else 
{
// User clicked the Cancel button
Toast.makeText(MainActivity.this, "Publish cancelled", Toast.LENGTH_SHORT).show();
}
else if (error instanceof FacebookOperationCanceledException) 
{
// User clicked the "x" button
Toast.makeText(MainActivity.this, "Publish cancelled",Toast.LENGTH_SHORT).show();
else 
{
// Generic, ex: network error
Toast.makeText(MainActivity.this, "Error posting story", Toast.LENGTH_SHORT).show();
}
}

})
.build();
feedDialog.show();
}
if (exception != null) 
{
System.out.println("Some thing bad happened!");
exception.printStackTrace();
}
}

});
}
}

How to Use Facebook SDK to Post Status From Android

 Useing this link :- http://www.londatiga.net/it/how-to-use-facebook-sdk-to-post-status-from-android/


I. Register Facebook Application
To enable user to post status to Facebook, first you have to create a Facebook application:
  • Login to Facebook and go to Facebook Developer page then register your application by clicking the Create New App button on top right of the page.
    Create New Facebook App
  • Fill the App Name with your application name.
    Facebook Create New App
  • Note the App ID, we will use it later on Android code. Note that you don’t have to select how app integrate with Facebook option, just click the Save Changes button.
    Facebook App Setting
II. Android Integration
To integrate Facebook with Android, you can use official Facebook SDK for Android that can be downloaded from github page. For sample project in this tutorial, i use old version of Facebook SDK downloaded from the github page with some small modification. If you want to use the latest version, just download the SDK from the link above.
Facebook Android SDK
In my sample project, i create two packages, one for Facebook SDK and the other for application main package.
Code implementation
1. Facebook Connection (TestConnect.java)
This example shows how to connect to Facebook, display webview dialog to authorize user then save the access token and username on shared preference for later use.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
public class TestConnect extends Activity {
    private Facebook mFacebook;
    private CheckBox mFacebookBtn;
    private ProgressDialog mProgress;
    private static final String[] PERMISSIONS = new String[] {"publish_stream", "read_stream", "offline_access"};
    private static final String APP_ID = "*****app id ******";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mFacebookBtn    = (CheckBox) findViewById(R.id.cb_facebook);
        mProgress       = new ProgressDialog(this);
        mFacebook       = new Facebook(APP_ID);
        SessionStore.restore(mFacebook, this);
        if (mFacebook.isSessionValid()) {
            mFacebookBtn.setChecked(true);
            String name = SessionStore.getName(this);
            name        = (name.equals("")) ? "Unknown" : name;
            mFacebookBtn.setText("  Facebook (" + name + ")");
            mFacebookBtn.setTextColor(Color.WHITE);
        }
        mFacebookBtn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                onFacebookClick();
            }
        });
        ((Button) findViewById(R.id.button1)).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(TestConnect.this, TestPost.class));
            }
        });
    }
    private void onFacebookClick() {
        if (mFacebook.isSessionValid()) {
            final AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage("Delete current Facebook connection?")
                   .setCancelable(false)
                   .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                           fbLogout();
                       }
                   })
                   .setNegativeButton("No", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                            mFacebookBtn.setChecked(true);
                       }
                   });
            final AlertDialog alert = builder.create();
            alert.show();
        } else {
            mFacebookBtn.setChecked(false);
            mFacebook.authorize(this, PERMISSIONS, -1, new FbLoginDialogListener());
        }
    }
    private final class FbLoginDialogListener implements DialogListener {
        public void onComplete(Bundle values) {
            SessionStore.save(mFacebook, TestConnect.this);
            mFacebookBtn.setText("  Facebook (No Name)");
            mFacebookBtn.setChecked(true);
            mFacebookBtn.setTextColor(Color.WHITE);
            getFbName();
        }
        public void onFacebookError(FacebookError error) {
           Toast.makeText(TestConnect.this, "Facebook connection failed", Toast.LENGTH_SHORT).show();
           mFacebookBtn.setChecked(false);
        }
        public void onError(DialogError error) {
            Toast.makeText(TestConnect.this, "Facebook connection failed", Toast.LENGTH_SHORT).show();
            mFacebookBtn.setChecked(false);
        }
        public void onCancel() {
            mFacebookBtn.setChecked(false);
        }
    }
    private void getFbName() {
        mProgress.setMessage("Finalizing ...");
        mProgress.show();
        new Thread() {
            @Override
            public void run() {
                String name = "";
                int what = 1;
                try {
                    String me = mFacebook.request("me");
                    JSONObject jsonObj = (JSONObject) new JSONTokener(me).nextValue();
                    name = jsonObj.getString("name");
                    what = 0;
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
                mFbHandler.sendMessage(mFbHandler.obtainMessage(what, name));
            }
        }.start();
    }
    private void fbLogout() {
        mProgress.setMessage("Disconnecting from Facebook");
        mProgress.show();
        new Thread() {
            @Override
            public void run() {
                SessionStore.clear(TestConnect.this);
                int what = 1;
                try {
                    mFacebook.logout(TestConnect.this);
                    what = 0;
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
                mHandler.sendMessage(mHandler.obtainMessage(what));
            }
        }.start();
    }
    private Handler mFbHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            mProgress.dismiss();
            if (msg.what == 0) {
                String username = (String) msg.obj;
                username = (username.equals("")) ? "No Name" : username;
                SessionStore.saveName(username, TestConnect.this);
                mFacebookBtn.setText("  Facebook (" + username + ")");
                Toast.makeText(TestConnect.this, "Connected to Facebook as " + username, Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(TestConnect.this, "Connected to Facebook", Toast.LENGTH_SHORT).show();
            }
        }
    };
    private Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            mProgress.dismiss();
            if (msg.what == 1) {
                Toast.makeText(TestConnect.this, "Facebook logout failed", Toast.LENGTH_SHORT).show();
            } else {
                mFacebookBtn.setChecked(false);
                mFacebookBtn.setText("  Facebook (Not connected)");
                mFacebookBtn.setTextColor(Color.GRAY);
                Toast.makeText(TestConnect.this, "Disconnected from Facebook", Toast.LENGTH_SHORT).show();
            }
        }
    };
}