我正在使用android facebook sdk,但我遇到了一个问题。 我创建了两个类:
public class FacebookSession implements Session.StatusCallback {
public interface SessionCallbacks {
public void onSessionOpened(String token, User user, boolean isNewProfile);
public void onSessionOpenFailed(String errorText);
}
public FacebookSession(Activity activity) {
...
}
@Override
public void call(Session session, SessionState sessionState, Exception e) {
switch (sessionState) {
case CLOSED:
...
// Calling SessionCallbacks callbacks here
break;
case CLOSED_LOGIN_FAILED:
...
// Calling SessionCallbacks callbacks here
break;
case OPENED:
...
// Calling SessionCallbacks callbacks here
break;
case OPENED_TOKEN_UPDATED:
...
// Calling SessionCallbacks callbacks here
break;
}
}
}
在我的活动中呼叫facebook会话:
public class LoginActivity extends FragmentActivity implements
FacebookSession.SessionCallbacks {
public LoginActivity() {
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
...
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode,
resultCode, data);
}
@Override
public void onSessionOpened(String token, User user, boolean isNewProfile) {
...
}
}
正如您所见,如果我希望在Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
中返回结果,我必须使用onActivityResult
类在每个活动的FacebookSession
方法中调用call
回调FacebookSession
。如果我不这样做,我的FacebookSession
就行不通。我想在这里做的是不必为使用Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
的每个活动调用此FacebookSession
。这有解决方法吗?谢谢
答案 0 :(得分:1)
如果您的所有活动都有可能记录用户或请求其他权限,那么没有,实现onActivityResult方法没有解决方法。通常情况下,使用Facebook登录功能的应用程序只能从一些有限的活动中进行,因此这不是问题。
您要处理多少活动?如果你绝对认为这是一个问题,那么你可以
创建一个所有活动都扩展的BaseActivity类,并将onActivityResult放在父类中;或
将您的所有Facebook集成转移到集中式活动中。