android - Facebook android sdk 4.0.1 - 未调用回调

标签 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()调用 Activity 的。因此,为了调用 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 调用回调可能更简单。

关于android - Facebook android sdk 4.0.1 - 未调用回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29496860/

相关文章:

android - 如何处理android中facebook的错误

android - 未指定 SDK 路径

android-recyclerview - Espresso 滑动手势测试在 Android 模拟器上失败,但在真实设备上通过

iPhone 蓝牙 SDK - 发现 Android/Windows phone 7 设备和后台发现

java - Android 应用程序在尝试获取 EditText 值时崩溃

android - 使用 appcache 在服务器上重新部署后,Meteor 会无休止地重新加载

android - 使用 epublib 搜索 epub 内容

java - android 使用 Facebook SDK 进行开发。 (无效的 key 哈希)

android - 注销 Facebook 登录按钮的回调

android - 使用 UIAutomator 获取 android.widget.ListView 的所有子级