我已经成功地使用以下代码从我的游戏中启动了Google排行榜显示:
startActivityForResult(Games.Leaderboards.getLeaderboardIntent(googleApiClient,getString(R.string.leaderboard)),LEADERBOARD_REQUEST_CODE);然而,最近在更新包括Google Play服务(可能还有其他谷歌库)之后,排行榜显示不再启动,相反,我在onActivityResult()中得到了返回代码GamesActivityResultCodes.RESULT_RECONNECT_REQUIRED,在logcat中我看到:
E/ClientUiFragAct(26401): Not signed in. To launch Client UI activities, you must be connected to the games service AND signed in.即使当我尝试启动图形用户界面时,我也会通过执行googleAPIClient.isConnected()来检查我是否已登录,这将返回true。
因此,在两个不同的设备上,当我能想到的唯一相关变化是对Google库的更新(Google Play服务7.5.71 1955121-036)时,这项功能在同一版本的应用程序上停止工作。我还有第三个设备,它仍然可以在上面工作,使用的是Google Play Services6.7.76(1745988-034年)的旧版本。我使用API level 22进行构建。
奇怪的是,其他几款游戏(不是我的)仍然安装了Google排行榜显示7.5.71版。
我可能用Google Play服务版本假设找错了方向。
还有谁有过这样的经历?
发布于 2015-09-15 21:00:17
我们通过删除GoogleApiClient.Builder配置中的"setAccountName“调用解决了这个问题。
旧代码:
GoogleApiClient.Builder builder = new GoogleApiClient.Builder( this );
builder.addApi( Games.API );
builder.addScope( Games.SCOPE_GAMES );
builder.addConnectionCallbacks( this );
builder.addOnConnectionFailedListener( this );
builder.setAccountName( "some.account@gmail.com" );
builder.build(); 新代码:
GoogleApiClient.Builder builder = new GoogleApiClient.Builder( this );
builder.addApi( Games.API );
builder.addScope( Games.SCOPE_GAMES );
builder.addConnectionCallbacks( this );
builder.addOnConnectionFailedListener( this );
builder.build(); 这有一个缺点,在登录时会显示帐户选择器,这在我们的用例中是可以的,您的用例也是如此。至少成就屏幕可以再次打开。
https://stackoverflow.com/questions/30584313
复制相似问题