Менеджер аккаунта возвращает пустое значение для com.google

Мне интересно, в каких случаях приложение может возвращать пустой массив при использовании

AccountManager am = AccountManager.get(this);
Accoun[] accounts = am.getAccountsByType("com.google");
return accounts[0].name

и вернуть нуль (или исключение нулевого указателя)

Я спрашиваю, потому что мое приложение доступно только в магазине Google Play, поэтому для доступа к нему нужна учетная запись Google. Итак, как менеджер учетных записей может не возвращать учетные записи типа com.google, если приложение было загружено из игрового магазина (если только они не загрузили его сбоку).

Опять же, вопрос заключается в том, какие сценарии могут привести к тому, что am.getAccountsByType("com.google") будет возвращать нуль или исключение нулевого указателя.


person Raigex    schedule 18.09.2013    source источник
comment
Я думаю, что ключ здесь, если они не загрузили его сбоку. Кроме того, можно установить приложение из Play Store, а затем удалить свою учетную запись Google, хотя я этого не пробовал.   -  person CommonsWare    schedule 18.09.2013
comment
@CommonsWare Я думал, что если они удалили основную учетную запись Google, они также удалили прилагаемые к ней приложения?   -  person Raigex    schedule 18.09.2013
comment
@CommonsWare Я не знаю, будет ли это иметь значение, но возможно ли, что тип учетной записи пользователя будет другим, если у него есть учетная запись gmail, такая как [email protected]?   -  person Raigex    schedule 19.09.2013
comment
Я никогда не пытался получить информацию об учетной записи Google от AccountManager. Я бы не ожидал изменения поведения на основе доменного имени Gmail, но пути Google часто загадочны... :)   -  person CommonsWare    schedule 19.09.2013


Ответы (1)


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

public static boolean isGoogleAccountPresent() {

        AccountManager manager = AccountManager.get(context);
        for(Account account : manager.getAccounts()) {
            if("com.google".equals(account.type)) {
                return true;
            }
        }
        return false;
}
person Nitin Sethi    schedule 18.09.2013
comment
О да, у меня уже есть такой код, я просто получаю нулевой указатель в другом месте, когда пытаюсь выполнить md5 учетную запись, и там происходит сбой. Мой вопрос в основном касается информации о том, когда учетные записи com.google могут быть пустыми, но при этом иметь мои учетные записи Google Play. - person Raigex; 18.09.2013
comment
Вы заявили о необходимом разрешении для доступа к информации? - person Nitin Sethi; 18.09.2013
comment
да. Он работает на всех устройствах, на которых есть учетная запись Google Play. Как говорится в моем вопросе, я не ищу, как получить учетную запись. Я рассматриваю сценарии, из-за которых он возвращает значение null для учетных записей Google. - person Raigex; 18.09.2013
comment
В этом случае ответ Commonsware кажется правильным. Приложения не удаляются, когда учетная запись Google, связанная с зарегистрированной учетной записью Play Store, удаляется, по крайней мере, для бесплатных приложений. Как обрабатываются приобретенные приложения при удалении учетной записи или переключении на другую учетную запись Google, эта ссылка android.stackexchange.com/questions/24483/ дает вам немного информации. - person Nitin Sethi; 18.09.2013