Как получить имя и фамилию учетной записи Google, в которую я вошел, в Android?
У меня есть простое приложение с аутентификацией Google, и я хочу показать приветственное сообщение. Если адрес электронной почты: johnsmith@gmail.com, я хочу Toast
с "Добро пожаловать, Джон Смит!" Как я могу это сделать?
Это мой код:
if (user == null) {
startActivityForResult(AuthUI.getInstance().createSignInIntentBuilder().build(), SIGN_IN_REQUEST_CODE);
} else {
Toast.makeText(MainActivity.this, "Welcome " + userName, Toast.LENGTH_SHORT).show();
}
Я пытался использовать этот код, но я получаю только имя пользователя, а не имя и фамилию.
AccountManager manager = (AccountManager) getSystemService(ACCOUNT_SERVICE);
Account[] list = manager.getAccounts();
Заранее спасибо!
2 ответа
Решение
onActivityResult:
public void onActivityResult(int requestCode, int resultCode, Intent result) {
if (requestCode == GOOGLE_REQUEST_CODE) { // Google + callback
handleSignInResult(Auth.GoogleSignInApi.getSignInResultFromIntent(result));
}
}
handleSignInResult:
private void handleSignInResult(GoogleSignInResult googleSignInResult) {
if (googleSignInResult.isSuccess()) {
GoogleSignInAccount acct = googleSignInResult.getSignInAccount();
if (acct != null) {
//get the data you need from GoogleSignInAccount
}
} else {
Toast.makeText(context.getApplicationContext(), "error", Toast.LENGTH_SHORT).show();
}
}
Вы можете найти больше на GoogleSignInAccount
: https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInAccount
Хорошо, отредактированный ответ -
Cursor c = activity.getContentResolver().query(ContactsContract.Profile.CONTENT_URI, null, null, null, null);
int count = c.getCount();
String[] columnNames = c.getColumnNames();
boolean b = c.moveToFirst();
int position = c.getPosition();
if (count == 1 && position == 0) {
for (int j = 0; j < columnNames.length; j++) {
String columnName = columnNames[j];
String columnValue = c.getString(c.getColumnIndex(columnName)));
...
//Use the values
}
}
c.close();
j = 0 представляет DISPLAY_NAME.
Но это доступно только от ICS. Добавьте разрешение READ_PROFILE и READ_CONTACTS в свой AndroidManifest.