Google Play游戏服务 - 未登录下一个活动

时间:2014-02-22 23:45:23

标签: android google-play-services google-play-games

在我的应用程序中,我有游戏助手(我希望登录按钮点击):

// Whether to automatically try to sign in on onStart(). We only set this
// to true when the sign-in process fails or the user explicitly signs out.
// We set it back to false when the user initiates the sign in process.
boolean mConnectOnStart = false;

在我的MainActivity(扩展BaseGameActivity)中,在登录按钮后单击我调用:

beginUserInitiatedSignIn();             

当然现在isSignedIn()返回true。

但是当我转到下一个Activity(aslo扩展BaseGameActivity)时: isSignedIn()返回false。

我当然可以在我的下一个Activity上调用beginUserInitiatedSignIn(),但我不想要它。 在我的应用程序中,用户可以登录,但不必登录。因此,如果用户未登录我的mainActivity,我不希望在下一个活动中显示登录表单。

编辑:目前我的解决方案是创建静态变量,并在我离开主要活动时设置它,如果是isSignedIn(),并且只有在此变量为真时才在下一个活动上调用beginUserInitiatedSignIn()。这是更好的自动解决方案吗?

1 个答案:

答案 0 :(得分:2)

有两种类型的登录:

  1. 用户启动了登录,其中显示了Google Play游戏徽标,并要求用户批准访问等。
  2. 无声登录(BaseGameActivity在其onStart通话中执行此操作) - 这会自动尝试登录,如果用户已登录,则会执行相同的回调,就像您已经通过用户启动了登录流程。
  3. 因此, 需要等待登录回拨才能在每项活动中尝试任何与Google Play游戏相关的来电。

    请注意,最近(4天前,2014年2月18日),BaseGameUtils library for Android已更新为使用新的Google Api Client模式,该模式允许您在登录前进行阅读调用(他们在在尝试处理之前会自动等到登录之后)。由于Google Api客户端提供了许多其他好处(例如改进了登录可靠性),如果您尚未更新,则应更新到最新的BaseGameUtils