当用户按下登录按钮时,会启动帐户选择器。如果他们按下除帐户选择器以外的屏幕上的其他位置,它就会解散并记录日志:
W/SignInActivity: onSignInFailed()...
Sign in failed during 2
==> Returning non-OK result: 0
W/AutoManageHelper: Unresolved error while connecting client. Stopping auto-manage.
然后调用OnActivityResult()
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (requestCode == RC_SIGN_IN) {
Task<GoogleSignInAccount> task =
GoogleSignIn.getSignedInAccountFromIntent(intent);
try {
GoogleSignInAccount account = task.getResult(ApiException.class);
onConnected(account);
} catch (ApiException apiException) {
String message = apiException.getMessage();
if (message == null || message.isEmpty()) {
message = getString(R.string.signin_other_error);
}
onDisconnected();
if(message.startsWith("13")){
new AlertDialog.Builder(MainActivity.this)
.setTitle(R.string.alert_nologin_title)
.setMessage(R.string.alert_nologin_message)
.setNeutralButton(android.R.string.ok, null)
.show();
}else{
new AlertDialog.Builder(this)
.setMessage(message)
.setNeutralButton(android.R.string.ok, null)
.show();
}
}
}
}
AlertDialog.Builder
在发生这种情况时显示13:
消息,因此我添加了if
语句来解决并针对此特定情况。
该应用已在Google Play控制台中注册,可以在正常情况下连接而不会出现问题。此外,此问题会导致应用程序崩溃,但现在不再是这种情况,用户现在可以随时解除或登录/退出,并且应用程序将保持稳定。
如果需要更多信息,项目将在GitHub上托管:https://github.com/MDodd423/TapAttack
感谢您的帮助。
答案 0 :(得分:1)
请注意,在拨打特定Google服务之前,您可能需要先在Google Developer Console中注册您的应用。如果你还没有完成,set up a project and application in the API Console。
然后,检查Accessing Google APIs,其中还讨论了开始automatically managed connection。在您的活动致电onStart()
后,您的GoogleApiClient
个实例会自动关联,并在致电onStop()
后断开连接。
查看此相关SO帖子以获取更多见解: