Как восстановить зарегистрированную учетную запись Google на телефонах Android? - PullRequest
22 голосов
/ 28 октября 2010

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

Ответы [ 2 ]

45 голосов
/ 28 октября 2010

Примерно так должно работать:

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)

0 голосов
/ 18 марта 2016

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

Получить учетную запись 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 на вашем мобильном телефоне

 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;
    }
}

объявить разрешения для вашего файла mainfest.

  <uses-permission android:name="android.permission.GET_ACCOUNTS" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...