【发布时间】:2012-07-11 12:36:53
【问题描述】:
我正在使用facebook sdk 登录用户。
我调用了我创建的一个活动,它只进行 facebook 登录,并且应该将结果返回给原始活动。
我是这样称呼它的(它来自自定义组件的内部,这就是使用 getContext() 的原因):
Intent intent = new Intent(getContext(), FacebookAuthenticationActivity.class);
Log.d(TAG, "Starting facebook authentication for result");
((Activity)getContext()).startActivityForResult(intent, REQUEST_FACEBOOK);
这里我想要回复:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
Log.d(TAG, "Result from something!");
if(requestCode == LoginWidget.REQUEST_FACEBOOK) {
if(resultCode == RESULT_OK && intent != null) {
Log.d(TAG, "Result from facebook received!");
mLoginWidget.onFacebookLoginSucceeded(intent);
}
}
super.onActivityResult(requestCode, resultCode, intent);
}
在 facebook 活动中,它是来自 facebook developers page 的代码。该代码没有错误...由于某种奇怪的原因,活动在调用FacebookAuthActivity 上的onCreate 之前调用了onActivityResult。
我写的代码是让用户登录,获取一些信息,最后调用:
Intent intent = new Intent();
intent.putExtra("user_json", response);
Log.d(TAG, "Setting result to: " + intent);
setResult(RESULT_OK, intent);
finish();
查看日志后,我得到了以下信息:
07-11 16:34:27.992: D/LoginWidget(6863): Starting facebook authentication for result
07-11 16:34:27.992: D/ProgramActivity(6863): I am starting an activity to get a result!
07-11 16:34:28.101: D/ProgramActivity(6863): Result from something!
07-11 16:34:40.875: D/Facebook-authorize(6863): Login Success! access_token=xxx expires=1347195352881
07-11 16:34:40.875: D/FacebookAuthentication(6863): User accepted our app in facebook!
07-11 16:34:42.351: D/FacebookAuthentication(6863): Setting result to: Intent { (has extras) }
所以我没有想法......由于某种原因,当我调用此活动时,它会立即在没有结果的情况下在父级上调用 onActivityResult,然后,它会登录,设置实际结果,调用完成,然后永远不要打电话给onActivityResult 并得到真正的回应。
我在这里遗漏了什么吗?我是否必须为此活动设置特定标志才能正确返回结果?
这只是一个简单的活动,包含一堆异步 facebook 调用,然后用结果回调......
更新
为了更清楚,我没有从这段代码中得到任何错误。问题是当我设置结果时,登录后,发起的活动没有收到结果。
【问题讨论】:
-
移除对 super.onActivityResult 的调用
-
@Orlymee 检查问题,更新它
标签: android android-intent facebook-android-sdk