sar*_*van 1 android google-play-services google-play-games
因此,当我实施登录时,谷歌播放登录的方式有变化,GoogleApiClient但是现在它与投掷有所不同,GoogleSignInClient我没有任何线索如何在用户登录或解锁成就时设置popupview.甚至在谷歌文档中对此没有很好的解释,所以任何人都知道它,请提前回复你的回答
//google variable
private static int RC_SIGN_IN = 9001;
private static final int RC_ACHIEVEMENT_UI = 9003;
GoogleApiClient googleApiClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void SignIn(View view) {
GoogleSignInClient signInClient = GoogleSignIn.getClient(this,
GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN);
Intent intent = signInClient.getSignInIntent();
startActivityForResult(intent, RC_SIGN_IN);
}
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()) {
// The signed in account is stored in the task's result.
GoogleSignInAccount signedInAccount = task.getResult();
} else {
// Player will need to sign-in explicitly using via UI
}
}
});
}
@Override
protected void onResume() {
super.onResume();
signInSilently();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Toast.makeText(MainActivity.this, String.valueOf(requestCode), Toast.LENGTH_SHORT).show();
if (requestCode == RC_SIGN_IN) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
Log.d("fuck", String.valueOf(result));
// Toast.makeText(MainActivity.this,String.valueOf(result),Toast.LENGTH_SHORT).show();
if (result.isSuccess()) {
// The signed in account is stored in the result.
Toast.makeText(MainActivity.this, "Succesfull", Toast.LENGTH_SHORT).show();
GoogleSignInAccount signedInAccount = result.getSignInAccount();
} else {
String message = result.getStatus().getStatusMessage();
if (message == null || message.isEmpty()) {
message = getString(R.string.signin_other_error);
}
new AlertDialog.Builder(this).setMessage(message)
.setNeutralButton(android.R.string.ok, null).show();
}
}
}
public void achievement(View view) {
Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this))
.getAchievementsIntent()
.addOnSuccessListener(new OnSuccessListener<Intent>() {
@Override
public void onSuccess(Intent intent) {
startActivityForResult(intent, RC_ACHIEVEMENT_UI);
}
});
}
public void unlock(View view) {
Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this))
.unlock(getString(R.string.achievement_newbie));
}
Run Code Online (Sandbox Code Playgroud)
好的,所以我在给出几次尝试之后得到了答案你可以做的就是在成功登录task.getResult()后将返回GoogleSignInAccount对象,你可以将它传递给getGamesClient将返回一个GamesClient对象并使用该对象的setViewForPopups方法,你可以调用方法.下面是明确的代码
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()) {
// The signed in account is stored in the task's result.
GoogleSignInAccount signedInAccount = task.getResult();
GamesClient gamesClient =Games.getGamesClient(MainActivity.this,signedInAccount);
gamesClient.setViewForPopups(findViewById(R.id.textview));
} else {
// Player will need to sign-in explicitly using via UI
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
546 次 |
| 最近记录: |