Java 删除google play games数据后被卡住且无法登录
我正在为我的libgdx游戏使用googleplay服务。我创造了一些虚拟的成就来测试,后来想把它们删除。在我的手机上,我进入谷歌游戏->设置->删除游戏数据->删除游戏数据 回到我的游戏后,我注意到游戏认为我仍然在登录。我使用以下代码检查用户是否已登录:Java 删除google play games数据后被卡住且无法登录,java,android,google-play,google-play-services,google-play-games,Java,Android,Google Play,Google Play Services,Google Play Games,我正在为我的libgdx游戏使用googleplay服务。我创造了一些虚拟的成就来测试,后来想把它们删除。在我的手机上,我进入谷歌游戏->设置->删除游戏数据->删除游戏数据 回到我的游戏后,我注意到游戏认为我仍然在登录。我使用以下代码检查用户是否已登录: @Override public boolean isSignedIn(){ return GoogleSignIn.getLastSignedInAccount(androidLauncher) != null; } 如果用户未登
@Override
public boolean isSignedIn(){
return GoogleSignIn.getLastSignedInAccount(androidLauncher) != null;
}
如果用户未登录,我会尝试以静默方式登录
private void signInSilently() {
signedInClient.silentSignIn().addOnCompleteListener(androidLauncher,
new OnCompleteListener<GoogleSignInAccount>() {
@Override
public void onComplete(@NonNull Task<GoogleSignInAccount> task) {
if (task.isSuccessful()) {
signedInAccount = task.getResult();
}
}
});
}
问题是,删除Play Games数据后,我的方法isSignedIn
总是返回true。但是,当我尝试执行显示成就之类的操作时,会出现以下错误:
com.google.android.gms.common.api.ApiException: 4: The user must be signed in to make this API call.
com.google.android.gms.common.api.ApiException: 8: 8:
显示成绩的代码:
@Override
public void showAchievements(){
androidLauncher.runOnUiThread(new Runnable() {
@Override
public void run() {
if (isSignedIn()) {
loadingView.showLoadingView();
Games.getAchievementsClient(androidLauncher, signedInAccount)
.getAchievementsIntent()
.addOnSuccessListener(new OnSuccessListener<Intent>() {
@Override
public void onSuccess(Intent intent) {
androidLauncher
.startActivityForResult(intent, RC_ACHIEVEMENT_UI);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Logger.error(e);
}
})
}
}
});
}
我做了一些研究,发现了一个新的方法。看起来状态码是8。谷歌至少看起来是这样
更新:在我的
isSignedIn
方法返回false后,在禁用静默登录后,我强制手动登录。强制手动登录并登录后,它现在可以工作了。但是,如果用户遇到同样的问题,我将无法为他们做到这一点。它们将被卡住,因为删除Play Games数据后,isSignedIn
方法似乎总是返回true 我有一个类似的问题,对我有效的是为我的项目启用Google Drive API。不知道为什么会这样,但确实如此
转到,然后打开“库”菜单选项。从那里,搜索“驱动器”并点击“谷歌驱动器API”项。然后您将看到一个启用按钮。您可以尝试清除缓存吗?
com.google.android.gms.common.api.ApiException: 8: 8: