2016-12-26 2 views
5

У меня есть простое приложение с аутентификацией google, и я хочу показать приветственное сообщение. Если учетная запись электронной почты j [email protected], я хочу Toast с «Добро пожаловать, Джон Смит!» Как я могу это сделать?Как получить первое и последнее имя учетной записи google, которое я вошел в систему, на Android?

Это мой код:

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

+0

Я, наконец, сделал это. Этот ответ мне помог. Благодаря! –

0

Хорошо отредактированный ответ -

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.

+0

Спасибо, но, как я уже сказал, я использовал этот код , Я получаю только имя пользователя. Мне нужна первая и последняя фамилия. –

+0

Ему нужно только имя не целое имя с id. – sukumar

+0

@ AlexM. см. отредактированный ответ. И, пожалуйста, примите ответ, если это вам поможет. Спасибо :) – iamgopal

Смежные вопросы