在多个活动中连接 GoogleApiClient 的问题

Issue connecting GoogleApiClient in multiple activities

我第一次尝试实现 google 播放服务排行榜,但遇到了一些问题。

我在主 activity 中有显示排行榜按钮,所以我在 MainActivity 中初始化了一个 GoogleApiClient,到目前为止一切正常 - google 连接,一个空白的排行榜。

真正填满排行榜的分数是从第二个activityGameActivity中获取的。 我创建了另一个 GoogleApiClient 实例并尝试连接它。 但是..它总是失败,即使在调用 apiClient.connect()

之后也是如此

我是不是做错了什么?整个项目只允许 1 位客户吗?

我在两个活动中都使用此代码进行初始化:

apiClient = new GoogleApiClient.Builder(this)
            .addApi(Games.API)
            .addScope(Games.SCOPE_GAMES)
            .enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener() {
                @Override
                public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
                    Toast.makeText(LevelSelector.this, "Failed to connect to google play", Toast.LENGTH_LONG).show();
                }
            })
            .build();

我从主要调用排行榜activity

    leaderboardTextView = (TextView) findViewById(R.id.leaderboard_button);
    leaderboardTextView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivityForResult(
                    Games.Leaderboards.getLeaderboardIntent(apiClient,
                            getString(R.string.leaderboard_most_stars)), 0);
        }
    });

并且分数从不同的 activity

提交到排行榜
private void updateScore(){
    if(!apiClient.isConnected()){
        apiClient.connect();
    }
    //Always returns false.
    if(apiClient.isConnected()) {
        Games.Leaderboards.submitScore(apiClient,
                getString(R.string.leaderboard_most_stars),
                totalStars);
    }
}

一个应用程序中只允许一个 API 客户端。使您的 apiClient public 静态 并使用 MainActivity.apiClient

从任何 class 访问它