在我的应用程序中,我有游戏助手(我希望登录按钮点击):
// 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()。这是更好的自动解决方案吗?
答案 0 :(得分:2)
有两种类型的登录:
BaseGameActivity
在其onStart
通话中执行此操作) - 这会自动尝试登录,如果用户已登录,则会执行相同的回调,就像您已经通过用户启动了登录流程。因此, 需要等待登录回拨才能在每项活动中尝试任何与Google Play游戏相关的来电。
请注意,最近(4天前,2014年2月18日),BaseGameUtils library for Android已更新为使用新的Google Api Client模式,该模式允许您在登录前进行阅读调用(他们在在尝试处理之前会自动等到登录之后)。由于Google Api客户端提供了许多其他好处(例如改进了登录可靠性),如果您尚未更新,则应更新到最新的BaseGameUtils
。