在多个活动中连接 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 访问它
我第一次尝试实现 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