На Kindle Fire можно ли получить адрес электронной почты пользователя? - PullRequest
7 голосов
/ 24 марта 2012

Этот вопрос обсуждает его для устройств Android в целом, но если вы попытаетесь запустить этот код на Kindle Fire, все, что вы получите, - это имя пользователя. Есть ли способ получить адрес электронной почты? Мы надеялись открыть диалоговое окно с предварительно заполненным адресом электронной почты, чтобы им не приходилось вводить его, если оно было правильным, но, похоже, единственное решение - заставить его повторно ввести его.

edit: вот код, предложенный другими потоками (который не работает на Kindle Fire):

Account[] accounts = AccountManager.get(this).getAccounts();
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.
  String possibleEmail = account.name;
  // possibleEmail is a list of account names, hopefully including the @gmail.com address.
}

Ответы [ 2 ]

0 голосов
/ 17 января 2016

На устройствах Fire, которые у меня есть, я сделал следующее:

final static String TYPE_GOOGLE = "com.google";
final static String TYPE_AMAZON = "com.amazon";
final static String AMAZON_EMAIL = "com.amazon.pim";

public static String getAccountName(final Context context) {
    boolean amazon = TextUtils.equals(Build.MANUFACTURER, "Amazon");
    String type = amazon ? TYPE_AMAZON : TYPE_GOOGLE;
    String email = null;
    try {
        Account acc[] = AccountManager.get(context).getAccountsByType(type);
        if (acc.length > 0) {
            email = acc[0].name;
            for (int i = 0; i < acc.length; i++) {
                Account account = acc[i];
                if (amazon) {
                    // there are a lot of flags, just skip them
                    if (!TextUtils.equals(account.type, TYPE_AMAZON)) {
                        // is it an email account?
                        if (account.type.startsWith(AMAZON_EMAIL)) {
                            email = account.name;
                        }
                    }
                }
            }
        } else {
            acc = AccountManager.get(context).getAccounts();
            if (acc.length > 0) {
                // just return the first one...
                email = acc[0].name;
            }
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return email;
}

Это также будет работать с устройствами Google Play.

0 голосов
/ 27 ноября 2013

На Kindle Fire возможно ли получить адрес электронной почты пользователя?

Извините, но Вы совершенно не правы.

I используется для ссылкив диалог входа в Google, который показывает, что все пользователи существовали на Kindle Fire.

Пожалуйста, следуйте этому коду:

public class AuthAcount {
    private Context context;

    private AccountManager mAccountManager;

    public AuthAcount(Context context) {
            setContext(context);
    }

    public Account[] getAccount() {
            mAccountManager = AccountManager.get(context);
            Account[] accounts = mAccountManager
                            .getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE);
            return accounts;
    }

    public Context getContext() {
            return context;
    }

    public void setContext(Context context) {
            this.context = context;
    }
}

P / s: Для использования класса GoogleAuthUtil можетвам нужен google-oauth-client-1.15.0-rc.jar (используйте последнюю версию).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...