Stack Overflow archive
8 scoreaccepted

Android: get user ID without requiring scary (for user) permissions?

score
8
question views
12.4K
license
CC BY-SA 3.0

If you use Google Play Services you can get the account type and account name without any extra permissions.

First, add the following dependency to build.gradle:

java
compile 'com.google.android.gms:play-services-auth:8.4.0'

Next, launch the account chooser intent:

java
Intent intent = AccountPicker.newChooseAccountIntent(null, null,
    new String[]{GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE},
    false, null, null, null, null);

try {
  startActivityForResult(intent, REQUEST_CODE_EMAIL);
} catch (ActivityNotFoundException e) {
  // This device may not have Google Play Services installed.
  // TODO: do something else
}

Finally, override onActivityResult to get the account type and account name:

java
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (requestCode == REQUEST_CODE_EMAIL && resultCode == RESULT_OK) {
    String accountName = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
    String accountType = data.getStringExtra(AccountManager.KEY_ACCOUNT_TYPE);
    // TODO: do something with the accountName
    return;
  }
  super.onActivityResult(requestCode, resultCode, data);
}

source: https://stackoverflow.com/a/19444640/1048340

Originally posted on Stack Overflow. Public user contributions are licensed under Creative Commons Attribution-ShareAlike.