In order to manage user preferences, at present I\'m grabbing the google user name (effectively the email address they\'ve registered to the device) and using (a hash of) that a
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:
compile 'com.google.android.gms:play-services-auth:8.4.0'
Next, launch the account chooser intent:
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:
@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