Как получить имя аккаунта google?
Создал метод при клике на текст textView1 в лог с тегом Account выводится количество аккаунтов 0. Хотя у меня точно есть 1 аккаунт почему так? И с ошибкой вылетает не может название аккаунта подставить в текст
разрешение тоже есть
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
public void onClick(View v){
AccountManager am = AccountManager.get(this); // current Context
//AccountManager am = (AccountManager) getSystemService(ACCOUNT_SERVICE); // видел такой способ
Account[] accounts = am.getAccountsByType("com.google");
Log.i("Account", accounts.length + "");
TextView tvInfo = (TextView)findViewById(R.id.textView1);
tvInfo.setText(accounts[0].name);
}
Ответы (2 шт):
Автор решения: Maks
→ Ссылка
Попробуйте это:
public String getUsername() {
AccountManager manager =
AccountManager.get(this);
Account[] accounts = manager.getAccountsByType("com.google");
List<String> possibleEmails = new LinkedList<String>();
for (Account account : accounts) {
// TODO: Check possibleEmail against an email regex or treat
// account.name as an email address only for certain account.type
// values.
possibleEmails.add(account.name);
}
if (!possibleEmails.isEmpty() && possibleEmails.get(0) != null) {
String email = possibleEmails.get(0);
String[] parts = email.split("@");
if (parts.length > 0 && parts[0] != null)
return parts[0];
else
return null;
} else
return null;
}
Permission:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
Автор решения: DrMcSheen
→ Ссылка
У меня вот так работает
<uses-permission
android:name="android.permission.ACCOUNT_MANAGER"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
AccountManager manager = AccountManager.get(this);
Account[] accounts = manager.getAccountsByType("com.google");
List<String> possibleEmails = new LinkedList<String>();
for (Account account : accounts) {
possibleEmails.add(account.name);
}
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED) {
return;
}
accounts = AccountManager.get(this).getAccounts();
//Log.e("", "Size: " + accounts.length);
for (Account account : accounts) {
String possibleEmail = account.name;
String type = account.type;
if (type.equals("com.google")) {
strUserNameGmail= possibleEmail;
break;
}
}