Facebook要求代码

Mas*_*rat 19 android facebook android-activity

我有一个Activity应该处理来自Facebook SDK和其他自定义活动的结果.

我在哪里可以找到Facebook SDK使用的requestCodes,以便不对我的活动使用相同的请求代码?

我应该能够在onActivityResult使用requestCode时区分它们,因此它们必须是唯一的.

Ind*_*ore 29

sdkInitialize通话中传递请求代码

FacebookSdk.sdkInitialize(context, 1200);
Run Code Online (Sandbox Code Playgroud)

然后

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (FacebookSdk.isFacebookRequestCode(requestCode)) {
      //Facebook activity result
      //Do your stuff here
      //Further you can also check if it's login or Share etc by using 
      //CallbackManagerImpl as explained by rajath's answer here
      if (requestCode == CallbackManagerImpl.RequestCodeOffset.Login.toRequestCode()) {
          //login
      }
      else if (requestCode == CallbackManagerImpl.RequestCodeOffset.Share.toRequestCode()){
         //share
      }
}
Run Code Online (Sandbox Code Playgroud)

来自文档

isFacebookRequestCode(INT)

如果请求代码在Facebook SDK请求使用的范围内,则返回true.这不包括您在对话框,按钮或LoginManager上明确设置的请求代码.SDK使用的请求代码范围从callbackRequestCodeOffset开始,并继续接下来的100个值.

sdkInitialize(Context,int)

此函数初始化Facebook SDK,如果未调用此函数,则不确定Facebook SDK函数的行为.它应该尽早调用.

public static synchronized void sdkInitialize(Context applicationContext, int callbackRequestCodeOffset)
applicationContext 应用程序上下文
callbackRequestCodeOffset将调用Facebook活动的请求代码偏移量.请不要在您的其他请求中使用您设置的值与其后的其他100个条目之间的范围.


Ape*_*rei 26

转到CallbackManagerImpl.RequestCodeOffset.我个人使用这样的代码来防止不必要的行为.

if (requestCode == CallbackManagerImpl.RequestCodeOffset.Login.toRequestCode()) {
        callbackManager.onActivityResult(requestCode, resultCode, data);
    }
Run Code Online (Sandbox Code Playgroud)


Dim*_*tar 13

试试这个:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);

    //Log.iClassMethod();

    switch(requestCode)
    {
        case 1:
            if (resultCode == Activity.RESULT_OK)
            {
                // do something ...
            }
            break;

        case ...:
            if (resultCode == Activity.RESULT_OK)
            {
                // do something ...
            }
            break;

        case Session.DEFAULT_AUTHORIZE_ACTIVITY_CODE:
        {
            Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
            Log.i("Facebook");
        }
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)