我正在编写一些测试,我用自己的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"));
但不使用我的伪造方法时,会调用这些回调。我在这里错过了什么?谢谢。
答案 0 :(得分:1)
您必须让回调管理器路由到您的FakeActivity,然后拨打您的回叫。您需要查看LoginManager如何注册它的回调。您需要使用CallbackManagerImpl。请注意,CallbackManagerImpl是内部的,如有更改,恕不另行通知。
直接从您的FakeFbLoginActivity或您的onActivityResult调用回调可能更简单。