Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除google play games数据后被卡住且无法登录_Java_Android_Google Play_Google Play Services_Google Play Games - Fatal编程技术网

Java 删除google play games数据后被卡住且无法登录

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; } 如果用户未登

我正在为我的libgdx游戏使用googleplay服务。我创造了一些虚拟的成就来测试,后来想把它们删除。在我的手机上,我进入谷歌游戏->设置->删除游戏数据->删除游戏数据

回到我的游戏后,我注意到游戏认为我仍然在登录。我使用以下代码检查用户是否已登录:

@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: