我刚刚在我的游戏中添加了Google Play服务排行榜,但存在一些问题。我无法启动排行榜活动。这是我的代码
startActivityForResult(Games.Leaderboards.getLeaderboardIntent(getApiClient(), "leaderboard_id"), 5000);
问题是没有任何getApiClient()方法。有什么想法吗?
答案 0 :(得分:3)
您必须使用GoogleApiClient类型的对象。你的代码应该是这样的:
public class MainActivity extends Activity implements GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener{
GoogleApiClient mGoogleClient;
...
@Override
protected void onCreate(final Bundle savedInstanceState) {
...
//Google Game
mGoogleClient = new GoogleApiClient.Builder(this, this, this)
.addApi(Games.API)
.addScope(Games.SCOPE_GAMES)
.setGravityForPopups(Gravity.TOP | Gravity.CENTER_HORIZONTAL)
.build();
}
@Override
public void onStart(){
super.onStart();
//Here is a good place to connect with Google Api
mGoogleClient.connect();
}
@Override
public void onConnected(Bundle connectionHint) {}
@Override
public void onConnectionSuspended(int cause) {}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {}
}
答案 1 :(得分:1)
Games APIs doc指向Android示例项目中BaseGameUtils库中的此方法以及类似的方法(如getApiClientBuilder()):
"如果您的游戏想要将其他Google Play服务API或范围添加到由BaseGameActivity管理的GoogleApiClient,则可以通过在GameHelper对象上调用getApiClientBuilder()来实现此目的。在BaseGameUtils。
我还没有在BaseGameUtils on github中看到这些方法,并且猜测它们会在某些时候更新。
更新:看起来BaseGameUtils中的GameHelper更新为on its way。
答案 2 :(得分:1)
如果您的主要活动扩展BaseGameActivity,例如 - 公共类MainActivity扩展了BaseGameActivity
然后你可以在该活动的任何地方使用getApiClient()。
但是如果你想从另一个活动(或非活动类)访问getApiClient(),那么这样做 -
公共类MainActivity扩展了BaseGameActivity {
static GoogleApiClient myclient;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myclient=getApiClient();
}
...}
然后你只需要打电话给" MainActivity.myclient" 而不是" getApiClient()"来自其他班级。