在另一个 activity 中获取 google 登录帐户

Get the google signed in account in another activity

我读了一些关于它的帖子,但我没有找到正确的方法。那么问题来了:

我在 login activity 中使用了 google signin,一切正常。用户转到 another activity,然后转到第三个,然后再转到另一个。在 fourth activity 中,我需要 google 签名用户(实际上是 activity 来使用 Google Play 服务、成就等)获得登录用户?我必须重新进行所有登录过程吗?

更新:

如前所述,我的 activity 中的更新代码如下:

@Override
protected void onStart() {
    super.onStart();        
    if (!isSignedIn()) {
        signInSilently();
    }

private boolean isSignedIn() {
    return GoogleSignIn.getLastSignedInAccount(this) != null;
}
private void signInSilently() {
    Log.d(TAG, "signInSilently()");

    mGoogleSignInClient.silentSignIn().addOnCompleteListener(this,
            new OnCompleteListener<GoogleSignInAccount>() {
                @Override
                public void onComplete(@NonNull Task<GoogleSignInAccount> task) {
                    if (task.isSuccessful()) {
                        Log.d(TAG, "signInSilently(): success");
                        onConnected(task.getResult());
                    } else {
                        Log.d(TAG, "signInSilently(): failure", task.getException());
                        onDisconnected();
                    }
                }
            });

因为我不想重新登录(按钮等)。首先,我认为应该连接用户。但即使他断开连接,signInSilently() 也应该再次连接用户。

我的最后一个问题是我得到一个空对象异常:

mLeaderboardsClient.submitScore(getString(R.string.leaderboard_leaderboard),



private void onConnected(GoogleSignInAccount googleSignInAccount) {
    Log.d(TAG, "onConnected(): connected to Google APIs");

    mAchievementsClient = Games.getAchievementsClient(this, googleSignInAccount);
    mLeaderboardsClient = Games.getLeaderboardsClient(this, googleSignInAccount);
    mEventsClient = Games.getEventsClient(this, googleSignInAccount);
    mPlayersClient = Games.getPlayersClient(this, googleSignInAccount);

据我所知,因为没有 GOOGLE 用户。我还需要做什么才能让我的 google 登录用户?

您可以使用此功能来检查用户是否已登录。

private boolean isSignedIn() {
  return GoogleSignIn.getLastSignedInAccount(context) != null;
}

https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignIn

public static GoogleSignInAccount getLastSignedInAccount (Context context)

Gets the last account that the user signed in with.

Returns: GoogleSignInAccount from last known successful sign-in. If user has never signed in before or has signed out / revoked access, null is returned.

如果 returns 为空,只需重新登录用户即可。就这些了。