I have found a bunch of posts with similar issues but most are using BaseGameUtils
or GoogleApiClient
which I don't have.
One suggested answer was to add, Games.setViewForPopups(getApiClient(), findViewById(R.id.gps_popup));
Which I can't do unless I have GoogleApiClient
.
Achievement code:
public void achieve(String achievement) {
Games.getAchievementsClient(this, signedInAccount).unlock(achievement);
}
public void increment(String achievement, int i) {
Games.getAchievementsClient(this, signedInAccount).increment(achievement, i);
}
Sign In code:
@Override
protected void onCreate(Bundle _savedInstanceState) {
...
signInSilently();
}
private void signInSilently() {
GoogleSignInClient signInClient = GoogleSignIn.getClient(this, GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN);
signInClient.silentSignIn().addOnCompleteListener(this,
new OnCompleteListener<GoogleSignInAccount>() {
@Override
public void onComplete(@NonNull Task<GoogleSignInAccount> task) {
if (task.isSuccessful()) {
signedInAccount = task.getResult();
findViewById(R.id.achievements_btn).setVisibility(View.VISIBLE);
} else {
startSignInIntent();
}
}
});
}
private void startSignInIntent() {
GoogleSignInClient signInClient = GoogleSignIn.getClient(this,
GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN);
Intent intent = signInClient.getSignInIntent();
startActivityForResult(intent, RC_SIGN_IN);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
if (result.isSuccess()) {
signedInAccount = result.getSignInAccount();
findViewById(R.id.achievements_btn).setVisibility(View.VISIBLE);
Toast.makeText(getApplicationContext(), "Signed In", Toast.LENGTH_SHORT).show();
} else {
String message = result.getStatus().getStatusMessage();
if (message == null || message.isEmpty()) {
message = "Error";
}
Toast.makeText(getApplicationContext(), "Sign In Failed, please check internet connection and restart the app to use achievements.", Toast.LENGTH_LONG).show();
cancelledSignIn = true;
}
}
}
private void showAchievements() {
Games.getAchievementsClient(this, signedInAccount)
.getAchievementsIntent()
.addOnSuccessListener(new OnSuccessListener<Intent>() {
@Override
public void onSuccess(Intent intent) {
startActivityForResult(intent, RC_ACHIEVEMENT_UI);
}
});
}
Not sure what to do, this all has worked fine except the pop up never shows. I never had to use GoogleApiClient
, if I do need to could you tell me why and how?
All help would be greatly appreciated!