Facebook android sdk 4.0.1 - 未调用回调
Facebook android sdk 4.0.1 - callbacks not called
我目前正在编写一些测试,其中我 "mock" 我自己 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);
这两种方法,在它们的过程结束时都属于调用 activity.Therefore 的 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"));
但 不是我伪造的方法时调用这些回调 。我在这里错过了什么?谢谢。
您必须将回调管理器路由到您的 FakeActivity,然后它将调用您的回调。您需要查看 LoginManager 如何注册它的回调。您需要使用 CallbackManagerImpl。请注意,CallbackManagerImpl 是内部的,可以更改,恕不另行通知。
直接从 FakeFbLoginActivity 或 onActivityResult 调用回调可能更简单。
我目前正在编写一些测试,其中我 "mock" 我自己 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);
这两种方法,在它们的过程结束时都属于调用 activity.Therefore 的 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"));
但 不是我伪造的方法时调用这些回调 。我在这里错过了什么?谢谢。
您必须将回调管理器路由到您的 FakeActivity,然后它将调用您的回调。您需要查看 LoginManager 如何注册它的回调。您需要使用 CallbackManagerImpl。请注意,CallbackManagerImpl 是内部的,可以更改,恕不另行通知。
直接从 FakeFbLoginActivity 或 onActivityResult 调用回调可能更简单。