为什么getPlayersClient()的OnSuccess方法永远不会运行?

时间:2018-01-15 10:43:45

标签: java android

在整合Google Play游戏登录时,我需要获取应用的播放器名称,但getCurrentPlayer()任务从未完成(playerName永久null)。 OnActivityResult来自startActivityForResult,意图来自GoogleSignInClient的getSignInIntent()方法。

以下是onActivityResultplayerName为全球)的相关代码:

@Override public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    // Result returned from launching the Intent from signInClient
    if (requestCode == SIGN_IN) {
        Task<GoogleSignInAccount> resTask =
                GoogleSignIn.getSignedInAccountFromIntent(data);
        if (resTask.isSuccessful()) {
            GoogleSignInAccount resAcct = resTask.getResult();
            PlayersClient playersClient = Games.getPlayersClient(this, resAcct);
            playersClient.getCurrentPlayer()
                    .addOnSuccessListener(new OnSuccessListener<Player>() {
                        @Override
                        public void onSuccess(Player taskPlayer) {
                            playerName = taskPlayer.getName();
                        }
                    });
            while(playerName==null){
                Log.d("OH GOD WHY", "WHY???");
            }
            //Do something with the name
            ...
        }  else {
            Toast.makeText(getApplicationContext(), "Unable to sign in. Please try again later.", Toast.LENGTH_SHORT).show();
        }
    }
}

在使用OnSuccess之前,我使用的是OnComplete,但从未运行过(isSuccessful()检查从未在此处运行):

playersClient.getCurrentPlayer()
    .addOnCompleteListener(new OnCompleteListener<Player>() {
        @Override
        public void onComplete(Task<Player> pTask) {
            if(pTask.isSuccessful()){
                Player player = pTask.getResult();
                playerName = player.getName();
            } else {
                //Handle error
                ...
            }

        }
    });

0 个答案:

没有答案