【问题标题】:Can I pass an Account via an Intent to another activity?我可以通过 Intent 将帐户传递给另一个活动吗?
【发布时间】:2012-10-06 23:38:51
【问题描述】:

是否可以通过 Intent 将 Android Account 对象从一个活动传递到另一个活动?如果是这样,怎么做?这是一种好的编程习惯吗?

【问题讨论】:

    标签: android android-intent account


    【解决方案1】:

    如果您的意思是android.accounts.Account,那么“是”,因为它实现了Parcelable,您可以使用IntentputExtra(String name, Parcelable value) 方法将它作为Intent 的额外传递。

    这是否是一种好的编程习惯……这完全取决于你为什么要这样做,以及收到它的Activity 会用它做什么。

    【讨论】:

    • @Squonk - 我一直在寻找如何做到这一点......你认为你可以用代码示例更新你的答案吗?谢谢!
    【解决方案2】:

    您可以通过Intent

    将帐户发送到其他活动

    如果用户已经登录,首先获取帐户

    GoogleSignInAccount account;
    account = GoogleSignIn.getLastSignedInAccount(this);
    

    然后在 Intent 中将帐户作为 Extra 传递

    Intent intent = new Intent(this,ReceiverActivity.class);
                intent.putExtra("ACCOUNT",account);
                startActivity(intent);
    

    在 ReceiverActivity 中

    GoogleSignInAccount account =getIntent().getParcelableExtra("ACCOUNT");
    

    然后您可以从用户的个人资料中获取其他详细信息,例如

    String personName = account.getDisplayName();
                String personGivenName = account.getGivenName();
                String personFamilyName = account.getFamilyName();
                String personEmail = account.getEmail();
                String personId = account.getId();
                Uri personPhoto = account.getPhotoUrl();
    

    【讨论】:

      【解决方案3】:

      您能否提供一个代码示例,并稍微解释一下您使用此传递的具体目的是什么?

      您可能希望优化应用程序的流程,以便直接处理帐户信息,并在需要时创建帐户对象。

      【讨论】:

      • 当然,我有一个包含一系列活动的应用程序,这些活动通过一系列 restful api 与服务器交互。服务器需要 oauth2 身份验证。我将令牌缓存在帐户管理器中,并希望根据需要从帐户管理器中获取令牌。通过传递帐户,可以轻松检索身份验证令牌。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多