Do you know How to integrate facebook into your android application?
First download the facebook sdk from above link and import into your workspace
Create your application and follow these:
manifest.xml
---------------
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="you package name"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".TestConnect"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".TestPost"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-sdk android:minSdkVersion="8" />
</manifest>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="you package name"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".TestConnect"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".TestPost"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-sdk android:minSdkVersion="8" />
</manifest>
res/layout/main.xml
----------------------
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="13sp"
android:textColor="#fff"
android:text="This example shows how to connect to Facebook, display authorization dialog and save user's token and username"/>
<CheckBox
android:id="@+id/cb_facebook"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginLeft="5dp"
android:text=" Facebook (Not connected) "
android:textSize="14sp"
android:textStyle="bold"
android:textColor="#ccc"
android:clickable="true"
android:focusable="true"
android:button="@drawable/btn_check_facebook"/>
<Button
android:id="@+id/button1"
android:layout_marginTop="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Test Post" />
</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="13sp"
android:textColor="#fff"
android:text="This example shows how to connect to Facebook, display authorization dialog and save user's token and username"/>
<CheckBox
android:id="@+id/cb_facebook"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginLeft="5dp"
android:text=" Facebook (Not connected) "
android:textSize="14sp"
android:textStyle="bold"
android:textColor="#ccc"
android:clickable="true"
android:focusable="true"
android:button="@drawable/btn_check_facebook"/>
<Button
android:id="@+id/button1"
android:layout_marginTop="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Test Post" />
</LinearLayout>
res/layout/post.xml
---------------------
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:textSize="13sp"
android:textColor="#fff"
android:text="This example shows how to post Facebook status"/>
<EditText
android:id="@+id/revieew"
android:layout_marginTop="15dp"
android:layout_width="250dp"
android:layout_height="100dp"
android:hint="Write your review"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:textSize="13sp"
android:textColor="#fff"
android:text="Also share to:"/>
<CheckBox
android:id="@+id/cb_facebook"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginLeft="5dp"
android:text=" Facebook"
android:textSize="14sp"
android:clickable="true"
android:focusable="true"
android:button="@drawable/btn_check_facebook"/>
<Button
android:id="@+id/button1"
android:layout_marginTop="15dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Submit "/>
</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:textSize="13sp"
android:textColor="#fff"
android:text="This example shows how to post Facebook status"/>
<EditText
android:id="@+id/revieew"
android:layout_marginTop="15dp"
android:layout_width="250dp"
android:layout_height="100dp"
android:hint="Write your review"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:textSize="13sp"
android:textColor="#fff"
android:text="Also share to:"/>
<CheckBox
android:id="@+id/cb_facebook"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginLeft="5dp"
android:text=" Facebook"
android:textSize="14sp"
android:clickable="true"
android:focusable="true"
android:button="@drawable/btn_check_facebook"/>
<Button
android:id="@+id/button1"
android:layout_marginTop="15dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Submit "/>
</LinearLayout>
TestConnection.java
----------------------
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.MalformedURLException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONTokener;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DownloadManager.Request;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import android.content.pm.PackageManager.NameNotFoundException;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Base64;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Toast;
import com.facebook.android.AsyncFacebookRunner;
import com.facebook.android.DialogError;
import com.facebook.android.Facebook;
import com.facebook.android.FacebookError;
import com.facebook.android.SessionStore;
import com.facebook.android.AsyncFacebookRunner.RequestListener;
import com.facebook.android.Facebook.DialogListener;
import com.facebook.android.Util;
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 = "your facebook app id from fecebook developers";
protected static final String TOKEN = null;
private BaseAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
generateFBKeyHash();
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) {
getFriendList();
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();
}
}
};
public void generateFBKeyHash()
{
try
{
PackageInfo info = getPackageManager().getPackageInfo("com.mobulous.desicomicsreader", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures)
{
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
// String key = Base64.encodeToString(md.digest(), Base64.DEFAULT);
Log.e("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
// userNameEditText.setText(key);
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
}
private void getFriendList()
{
Bundle params = new Bundle();
params.putString("method", "fql.query");
params.putString("query", "SELECT name,uid,pic_square FROM user WHERE uid IN ( SELECT uid2 FROM friend WHERE uid1=me() )");
AsyncFacebookRunner runner = new AsyncFacebookRunner(this.mFacebook);
runner.request(params, new RequestListener(){
public void onComplete(String response) {
// TODO Auto-generated method stub
try {
JSONObject json = Util.parseJson(response);
JSONArray array = json.getJSONArray("data");
System.out.println(array.length());
for(int i=0;i<array.length();i++){
JSONObject friend = array.getJSONObject(i);
Log.d("uid",friend.getString("uid"));
Log.d("name", friend.getString("name"));
Log.d("pic_square",friend.getString("pic_square"+"\n"));
}
//System.out.println(json.toString());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FacebookError e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void onIOException(IOException e) {
// TODO Auto-generated method stub
}
public void onFileNotFoundException(FileNotFoundException e) {
// TODO Auto-generated method stub
}
public void onMalformedURLException(MalformedURLException e) {
// TODO Auto-generated method stub
}
public void onFacebookError(FacebookError e) {
// TODO Auto-generated method stub
}
});
}
}
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.MalformedURLException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONTokener;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DownloadManager.Request;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import android.content.pm.PackageManager.NameNotFoundException;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Base64;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Toast;
import com.facebook.android.AsyncFacebookRunner;
import com.facebook.android.DialogError;
import com.facebook.android.Facebook;
import com.facebook.android.FacebookError;
import com.facebook.android.SessionStore;
import com.facebook.android.AsyncFacebookRunner.RequestListener;
import com.facebook.android.Facebook.DialogListener;
import com.facebook.android.Util;
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 = "your facebook app id from fecebook developers";
protected static final String TOKEN = null;
private BaseAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
generateFBKeyHash();
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) {
getFriendList();
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();
}
}
};
public void generateFBKeyHash()
{
try
{
PackageInfo info = getPackageManager().getPackageInfo("com.mobulous.desicomicsreader", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures)
{
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
// String key = Base64.encodeToString(md.digest(), Base64.DEFAULT);
Log.e("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
// userNameEditText.setText(key);
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
}
private void getFriendList()
{
Bundle params = new Bundle();
params.putString("method", "fql.query");
params.putString("query", "SELECT name,uid,pic_square FROM user WHERE uid IN ( SELECT uid2 FROM friend WHERE uid1=me() )");
AsyncFacebookRunner runner = new AsyncFacebookRunner(this.mFacebook);
runner.request(params, new RequestListener(){
public void onComplete(String response) {
// TODO Auto-generated method stub
try {
JSONObject json = Util.parseJson(response);
JSONArray array = json.getJSONArray("data");
System.out.println(array.length());
for(int i=0;i<array.length();i++){
JSONObject friend = array.getJSONObject(i);
Log.d("uid",friend.getString("uid"));
Log.d("name", friend.getString("name"));
Log.d("pic_square",friend.getString("pic_square"+"\n"));
}
//System.out.println(json.toString());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FacebookError e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void onIOException(IOException e) {
// TODO Auto-generated method stub
}
public void onFileNotFoundException(FileNotFoundException e) {
// TODO Auto-generated method stub
}
public void onMalformedURLException(MalformedURLException e) {
// TODO Auto-generated method stub
}
public void onFacebookError(FacebookError e) {
// TODO Auto-generated method stub
}
});
}
}
TestPost.java
----------------
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.app.ProgressDialog;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
import com.facebook.android.AsyncFacebookRunner;
import com.facebook.android.BaseRequestListener;
import com.facebook.android.Facebook;
import com.facebook.android.SessionStore;
public class TestPost extends Activity{
private Facebook mFacebook;
private CheckBox mFacebookCb;
private ProgressDialog mProgress;
private Handler mRunOnUi = new Handler();
private static final String APP_ID = "your facebook app id from fecebook developers";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.post);
final EditText reviewEdit = (EditText) findViewById(R.id.revieew);
mFacebookCb = (CheckBox) findViewById(R.id.cb_facebook);
mProgress = new ProgressDialog(this);
mFacebook = new Facebook(APP_ID);
SessionStore.restore(mFacebook, this);
if (mFacebook.isSessionValid()) {
mFacebookCb.setChecked(true);
String name = SessionStore.getName(this);
name = (name.equals("")) ? "Unknown" : name;
mFacebookCb.setText(" Facebook (" + name + ")");
}
((Button) findViewById(R.id.button1)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String review = reviewEdit.getText().toString();
if (review.equals("")) return;
if (mFacebookCb.isChecked()) postToFacebook(review);
}
});
}
private void postToFacebook(String review) {
mProgress.setMessage("Posting ...");
mProgress.show();
AsyncFacebookRunner mAsyncFbRunner = new AsyncFacebookRunner(mFacebook);
Bundle params = new Bundle();
params.putString("message", review);
//params.putString("name", "Dexter");
//params.putString("caption", "londatiga.net");
//params.putString("link", "http://www.londatiga.net");
//params.putString("description", "Dexter, seven years old dachshund who loves to catch cats, eat carrot and krupuk");
//params.putString("picture", "http://twitpic.com/show/thumb/6hqd44");
mAsyncFbRunner.request("me/feed", params, "POST", new WallPostListener());
}
private final class WallPostListener extends BaseRequestListener {
public void onComplete(final String response) {
mRunOnUi.post(new Runnable() {
@Override
public void run() {
mProgress.cancel();
Toast.makeText(TestPost.this, "Posted to Facebook", Toast.LENGTH_SHORT).show();
}
});
}
}
}
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.app.ProgressDialog;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
import com.facebook.android.AsyncFacebookRunner;
import com.facebook.android.BaseRequestListener;
import com.facebook.android.Facebook;
import com.facebook.android.SessionStore;
public class TestPost extends Activity{
private Facebook mFacebook;
private CheckBox mFacebookCb;
private ProgressDialog mProgress;
private Handler mRunOnUi = new Handler();
private static final String APP_ID = "your facebook app id from fecebook developers";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.post);
final EditText reviewEdit = (EditText) findViewById(R.id.revieew);
mFacebookCb = (CheckBox) findViewById(R.id.cb_facebook);
mProgress = new ProgressDialog(this);
mFacebook = new Facebook(APP_ID);
SessionStore.restore(mFacebook, this);
if (mFacebook.isSessionValid()) {
mFacebookCb.setChecked(true);
String name = SessionStore.getName(this);
name = (name.equals("")) ? "Unknown" : name;
mFacebookCb.setText(" Facebook (" + name + ")");
}
((Button) findViewById(R.id.button1)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String review = reviewEdit.getText().toString();
if (review.equals("")) return;
if (mFacebookCb.isChecked()) postToFacebook(review);
}
});
}
private void postToFacebook(String review) {
mProgress.setMessage("Posting ...");
mProgress.show();
AsyncFacebookRunner mAsyncFbRunner = new AsyncFacebookRunner(mFacebook);
Bundle params = new Bundle();
params.putString("message", review);
//params.putString("name", "Dexter");
//params.putString("caption", "londatiga.net");
//params.putString("link", "http://www.londatiga.net");
//params.putString("description", "Dexter, seven years old dachshund who loves to catch cats, eat carrot and krupuk");
//params.putString("picture", "http://twitpic.com/show/thumb/6hqd44");
mAsyncFbRunner.request("me/feed", params, "POST", new WallPostListener());
}
private final class WallPostListener extends BaseRequestListener {
public void onComplete(final String response) {
mRunOnUi.post(new Runnable() {
@Override
public void run() {
mProgress.cancel();
Toast.makeText(TestPost.this, "Posted to Facebook", Toast.LENGTH_SHORT).show();
}
});
}
}
}
res/drawable/btn_check_facebook.xml
-----------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_checked="true"
android:state_window_focused="true"
android:state_enabled="true"
android:drawable="@drawable/ic_facebook_on" />
<item
android:state_checked="true"
android:state_window_focused="false"
android:state_enabled="true"
android:drawable="@drawable/ic_facebook_on" />
<item
android:state_checked="false"
android:state_window_focused="true"
android:state_enabled="true"
android:drawable="@drawable/ic_facebook_off" />
<item
android:drawable="@drawable/ic_facebook_off" />
</selector>
nice post..... very useful code for me ....Thank u so much mouli garu
ReplyDelete