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

时间:2017-10-06 09:34:12

标签: android google-api-client

我是第一次尝试实施Google Play服务排行榜但有一些问题。

我在主要活动中有show showboard按钮,因此我在MainActivity中初始化了一个GoogleApiClient,到目前为止一切都很好 - 谷歌连接和一个空白的排行榜。

实际填充排行榜的分数来自第二项活动GameActivity。 我创建了另一个GoogleApiClient实例并尝试连接它。 但是......即使在调用apiClient.connect()

之后总是会失败

我做错了吗?整个计划只允许一个客户?

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

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();

我从主要活动中呼叫排行榜

    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);
        }
    });

分数从不同的活动提交给排行榜

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);
    }
}

1 个答案:

答案 0 :(得分:1)

应用中只允许一个API客户端。让您的apiClient 公开静态并使用MainActivity.apiClient

从任何课程访问它