Facebook SDK for Android - 以编程方式设置应用程序ID

Mat*_*ola 11 android facebook-android-sdk

我有一个原生Android应用程序,需要根据可在运行时更改的应用程序设置连接到不同的Facebook应用程序(不同的应用程序ID).

想象一下,应用程序可以设置为指向DEV,TEST或PROD.当指向DEV时,FB应用程序ID应为"1".当指向TEST时,FB应用程序ID应为"2".等等

问题是来自Facebook SDK的UiLifecycleHelper在onCreate阶段自动从AndroidManifest.xml读取"com.facebook.sdk.ApplicationId".似乎没有办法以编程方式设置它.

是否可以使用UiLifecycleHelper并在运行时指向不同的应用程序ID,或者我是否必须回退到手动管理会话?

Har*_*rdy 26

大家好我知道上面的答案是对的older sdk version,但是facebook sdk 4没有Session上课

您可以使用以下单行代码完成此操作:

FacebookSdk.setApplicationId(APP_ID);
Run Code Online (Sandbox Code Playgroud)

谢谢!

  • 我们可以随时进行,还是必须在FacebookSdk.sdkInitialize()之前进行? (2认同)

小智 13

这是我用来设置应用程序ID的方法

    private Session.StatusCallback statusCallback = new SessionStatusCallback();

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    String s=""+R.string.app_id;

    Session session = new Session.Builder(getBaseContext()).setApplicationId(s).build();

    Session.setActiveSession(session);

    if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
        session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback));
    }
}

private class SessionStatusCallback implements Session.StatusCallback {
    @Override
    public void call(Session session, SessionState state, Exception exception) {
        // TODO Auto-generated method stub
        if(session.isOpened()){
            //Do your task
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • +1用于查找现有代码的解决方案. (2认同)

Mat*_*ola 3

我决定在 GitHub 上分叉 facebook-android-sdk 项目并进行必要的更改。如果有人感兴趣,我已经提交了包含更改的拉取请求,https://github.com/facebook/facebook-android-sdk/pull/294。