Facebook android sdk 4.0.1 - 没有调用回调

时间:2015-04-07 16:49:55

标签: android facebook-android-sdk android-testing android-espresso

我正在编写一些测试,我用自己的FacebookActivity“模拟”FakeFacebookActivity,其唯一目的是关闭自己并设置结果代码。所以在这里,我不是使用:LoginManager.getInstance().logInWithReadPermissions(activity, Arrays.asList("email"));启动真正的Facebook登录页面,而是执行以下操作:

Intent fakeFbIntent = new Intent(activity, FakeFbLoginActivity.class);
fakeFbIntent.putExtra("resultCode", 0);
activity.startActivityForResult(fakeFbIntent, 64206);

这两个方法在进程结束时都属于调用活动的onActivityResult()。因此,要调用facebook回调(FacebookCallback<LoginResult>中的那些)我写onActivityResult()这样:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        CallbackManager.Factory.create().getCallBackManager().onActivityResult(requestCode, resultCode, data);
}

这里的问题是,当我使用LoginManager.getInstance().logInWithReadPermissions(activity, Arrays.asList("email"));不使用我的伪造方法时,会调用这些回调。我在这里错过了什么?谢谢。

1 个答案:

答案 0 :(得分:1)

您必须让回调管理器路由到您的FakeActivity,然后拨打您的回叫。您需要查看LoginManager如何注册它的回调。您需要使用CallbackManagerImpl。请注意,CallbackManagerImpl是内部的,如有更改,恕不另行通知。

直接从您的FakeFbLoginActivity或您的onActivityResult调用回调可能更简单。