Как мне получить запись в Google Account на телефонах Android?

StackOverflow https://stackoverflow.com/questions/4038333

  •  27-09-2019
  •  | 
  •  

Вопрос

Я разрабатываю приложение для Android, и мне нужно получить учетную запись Google, используемую на телефоне. Я хочу сделать это для C2DM, но я не хочу просить пользователя войти в его / ее учетную запись электронной почты Google, если они уже вошли в систему. Есть ли способ сделать это?

Это было полезно?

Решение

Что-то вроде этого должно работать:

AccountManager manager = (AccountManager) getSystemService(ACCOUNT_SERVICE);
Account[] list = manager.getAccounts();
String gmail = null;

for(Account account: list)
{
    if(account.type.equalsIgnoreCase("com.google"))
    {
        gmail = account.name;
        break;
    }
}

И вам понадобится следующее разрешение в вашем манифесте:

<uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission>

Не забудьте «запрашивать разрешения во время выполнения», если вы поддерживаете Android 6, а затемhttps://developer.android.com/training/permissions/Requesting.html.

Я написал это из памяти, чтобы это могло понадобиться немного настроить. Видимо, теперь можно зарегистрироваться без адреса электронной почты, поэтому, возможно, сделать некоторое регулярное выражение на данных, чтобы убедиться, что это на самом деле адрес электронной почты (убедитесь, что он содержит @gmail или @googlemail)

Другие советы

Я попробую ниже возможности, чтобы получить адрес электронной почты а также имя пользователя

Получить аккаунт Google на вашем мобильном телефоне

 public String getMailId() {
        String strGmail = null;
        try {
            Account[] accounts = AccountManager.get(this).getAccounts();
            Log.e("PIKLOG", "Size: " + accounts.length);
            for (Account account : accounts) {

                String possibleEmail = account.name;
                String type = account.type;

                if (type.equals("com.google")) {

                    strGmail = possibleEmail;
                    Log.e("PIKLOG", "Emails: " + strGmail);
                    break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
             strGmail = null;
        }

        return strGmail;
    }

Получите имя пользователя Google Uscal на вашем мобильном телефоне

 public String getUsername() {
    List<String> possibleEmails = null;
    try {
        AccountManager manager = AccountManager.get(this);
        Account[] accounts = manager.getAccountsByType("com.google");
        possibleEmails = new LinkedList<>();

        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);
        }
    } catch (Exception e) {
        e.printStackTrace();
        if (possibleEmails != null) {
            possibleEmails.clear();
        }
    }

    if (possibleEmails != null) {
        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;
        }
    } else {
        return null;
    }
}

Объявите разрешения на ваш основной файл.

  <uses-permission android:name="android.permission.GET_ACCOUNTS" />
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top