gpt4 book ai didi

android - 如何将额外数据与从 GoogleSignInClient.getSignInIntent() 获得的 Intent 一起传递?

转载 作者:行者123 更新时间:2023-12-04 04:18:57 25 4
gpt4 key购买 nike

我需要将文本字符串与 Google 登录 Intent 一起传递,以便稍后在 onActivityResult 方法中检索它。

我使用以下代码触发 GSI 帐户选择器 Activity

GoogleSignInOptions googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken("xxxxxxxxxxxxxxxxxxxxx")
.requestEmail()
.build();
final GoogleSignInClient client = GoogleSignIn.getClient(MainActivity.activity, googleSignInOptions);
Intent signInIntent = client.getSignInIntent();

// As extra
signInIntent.putExtra("CALLSTACK_UID", newCallStack.uid);

this.startActivityForResult(signInIntent, RC_SIGN_IN);

稍后尝试通过

检索它
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN) {
String callstack_uid = data.getStringExtra("CALLSTACK_UID");
//...
}
}

data.getStringExtra("CALLSTACK_UID") 总是返回 null,即使它应该返回一个字符串。

我唯一的选择是在 Activity 中创建静态变量而不是通过 Intent 传递值吗?

最佳答案

  1. 第一个 intent 被传递给 startActivityForResult
  2. 第二个 intent 作为参数从 google 登录传递给 onActivityResult

带登录的 Google Activity 会创建新 Intent 并将其返回到您的应用。

所以有两个 Intent ,它们永远不会是同一个对象,所以你不能指望来自第一个 intent 的数据会出现在第二个 intent 中;

只需将值保存在activity 的字段中,并将其添加到onSaveInstanceState

P.S 静态字段并不总是一个好的选择(例如可能导致内存泄漏)

关于android - 如何将额外数据与从 GoogleSignInClient.getSignInIntent() 获得的 Intent 一起传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59908426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com