Android:在各种活动中分享facebook会话对象

时间:2012-07-08 08:07:49

标签: android facebook session android-activity sharedpreferences

我需要在我的Android应用中实现facebook的共享功能。我的方案是我必须能够在所有其他活动中使用在启动屏幕中创建的facebook对象。我已经在SO&中检查过相关问题了。发现下面提到的链接。现在我在猜测,其中哪一个是理想的实施方式。请告诉我您对这些方法的看法,或者如果您有自己的方法,请告诉我。

Sharing a global facebook object across Android activities

Facebook android: passing facebook object between activities

Android: Passing a Facebook session across activities

Facebook wall post from multiple Activities 在上面提到的答案中

First Solution 处理在应用程序上下文中创建facebook对象并在整个应用程序中共享:

public class GlobalVars extends Application {

public static final String APP_ID = "123456789";    
public Facebook facebook = new Facebook(APP_ID);

}

第二个解决方案声明使用sharedprefernce。创建有效的facebook会话后,它会存储在sharedpreferences中,并在需要时在每个活动中恢复。

SharedPreferences prefs = getApplicationContext().getSharedPreferences("facebook",MODE_PRIVATE);
String access_token = prefs.getString("access_token", null);
long expires = prefs.getLong("access_expires", 0);
if(access_token != null) {
facebook.setAccessToken(access_token);
}
if(expires != 0) {
facebook.setAccessExpires(expires);
}

第三个解决方案声明使用parcelable实现。

public void writeToParcel(Parcel out, int flags) {
out.writeInt(mData);

}

第四个解决方案正在尝试创建一个包含静态Facebook对象的类,并尝试在所有活动中使用相同的内容。

Class Utiltiy {
public static Facebook mFacebook;

public static void initialize() {
   mFacebook = new Facebook(app_id);
}
}

Utility.mFacebook.request(....).

感谢您浏览整篇文章。请提出合适的方法。

1 个答案:

答案 0 :(得分:1)

还有一种方法可以在Android Account Manager中存储Facebook凭据。 如果用户安装了facebook app并且已经登录,则可以从Account Manager获取其凭据。此方法为用户提供了一个中心点(设置 - >帐户)来定义其凭据。从那里你可以自定义它们甚至删除它们。