来自 Fragment 的 Google Sign-In 未返回到应用程序
Google Sign-In from Fragment is not returned to the app
问题是 Fragment 中的 Google Sign-In 关闭了应用程序并且从不调用 onActivityResult
Fragment 或 parent Activity。当我从片段中以 described in example 启动 signInIntent
时,应用程序关闭并出现 Sign-In 对话框。我可以选择一个帐户 Sign-In,但之后我只能看到我的桌面而不是我的应用程序。
Sign-In API 使用我配置的客户端 parent Activity:
googleApiClient = new GoogleApiClient.Builder(activity)
.enableAutoManage(activity /* FragmentActivity */, this /* OnConnectionFailedListener */)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.addConnectionCallbacks(this)
.build();
添加:片段 parent Activity 未启动 activity。在我的启动 activity 中,我执行 Facebook sign-in 操作,并在用户已经签名的情况下立即 finish
它。问题能出在这个地方吗?
onActivityResult 在你 activity 中被调用,在你的 activity
中添加这样的东西
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.container);
fragment.onActivityResult(requestCode, resultCode, data);
}
并覆盖片段中的 onActivityResult
问题出在 Intent.FLAG_ACTIVITY_NO_HISTORY
用于从登录 Activity 启动第二个 Activity(Fragment 的父级)。此外,您可以从 Fragment 调用 signInIntent
并在那里获得 onActivityResult
(您不需要从 Activity 调用此意图)。
问题是 Fragment 中的 Google Sign-In 关闭了应用程序并且从不调用 onActivityResult
Fragment 或 parent Activity。当我从片段中以 described in example 启动 signInIntent
时,应用程序关闭并出现 Sign-In 对话框。我可以选择一个帐户 Sign-In,但之后我只能看到我的桌面而不是我的应用程序。
Sign-In API 使用我配置的客户端 parent Activity:
googleApiClient = new GoogleApiClient.Builder(activity)
.enableAutoManage(activity /* FragmentActivity */, this /* OnConnectionFailedListener */)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.addConnectionCallbacks(this)
.build();
添加:片段 parent Activity 未启动 activity。在我的启动 activity 中,我执行 Facebook sign-in 操作,并在用户已经签名的情况下立即 finish
它。问题能出在这个地方吗?
onActivityResult 在你 activity 中被调用,在你的 activity
中添加这样的东西 @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.container);
fragment.onActivityResult(requestCode, resultCode, data);
}
并覆盖片段中的 onActivityResult
问题出在 Intent.FLAG_ACTIVITY_NO_HISTORY
用于从登录 Activity 启动第二个 Activity(Fragment 的父级)。此外,您可以从 Fragment 调用 signInIntent
并在那里获得 onActivityResult
(您不需要从 Activity 调用此意图)。