Для чего мне использовать Android AccountManager?

Я видел AccountManager в Android SDK и что он используется для хранения информации об учетной записи. Таким образом, я не могу найти общего обсуждения того, для чего он предназначен. Кто-нибудь знает о каких-либо полезных дискуссиях о том, каково намерение AccountManager и что он вам покупает? Есть мнения о том, для какого типа аккаунтов это подходит? Будете ли вы размещать информацию об учетной записи вашего пользователя для общего веб-сервиса?


person Phil    schedule 27.04.2010    source источник
comment
Примечание. Я нацелен на 2.1 и выше, поэтому я могу использовать AccountManager, если это разумный выбор.   -  person Phil    schedule 27.04.2010
comment
В этом сообщении есть раздел, посвященный этому вопросу: udinic. wordpress.com/2013/04/24/   -  person Udinic    schedule 25.04.2013
comment
@Удиник - Спасибо. Много помощи!   -  person Chad Bingham    schedule 28.11.2014
comment
Эта тема рассматривается на этом сайте: www.digigene.com/android/accounts- в Android/   -  person Ali Nem    schedule 17.08.2016
comment
Существует также библиотека для управления учетными записями в Android здесь.   -  person Ali Nem    schedule 25.09.2016


Ответы (3)


Этот вопрос немного устарел, но я думаю, что он все еще представляет большой интерес.

AccountManager, SyncAdapter и ContentProvider идут вместе.

Но вы можете:

С AccountManager / SyncAdapter / ContentProvider:

Итог: фреймворк AccountManager/SyncAdapter/ContentProvider помогает, если вы хотите синхронизировать данные с веб-ресурса. Требуются поддельные/тупые реализации на API 7. Также

  • Если вы хотите хранить только данные, вам следует рассмотреть более простой механизм хранения данных.
  • Если вам нужно получить только один ресурс, вы можете использовать AsyncTaskLoader.
  • Если вы хотите загружать изображения асинхронно, вы можете использовать специализированные библиотеки, такие как Square Picasso.
  • Если вы хотите выполнить только какой-то код в данный момент времени, вы можете рассмотреть Service/Alarm
  • доступно только из API >= 7 (это уже не имеет значения)

Наконец, если вы используете SyncAdapter, серьезно рассмотрите возможность Firebase Cloud Messaging (ранее Google Cloud Messaging ), также известные как «push-уведомления», чтобы получать более свежие обновления и оптимизировать использование батареи.

person rds    schedule 23.12.2011
comment
В образце SDK единственным необязательным элементом является AccountAuthenticatorActivity. - person rds; 23.12.2011
comment
Я еще не знаком с этими классами, но возможно ли, чтобы эти классы добавляли учетную запись с вызовами функций без взаимодействия с пользователем? Например, добавление учетной записи Microsoft Exchange, учетной записи Google, учетной записи POP3/IMAP. Спасибо. - person dackyD; 17.01.2012
comment
@dackyD да, вы можете добавить учетную запись программно - person rds; 19.01.2012
comment
спасибо @rds, но, судя по вашему объяснению, примера кода недостаточно. Кажется, мне нужно также реализовать SyncAdapter и ContentProvider, чтобы достичь моих целей. Поправьте меня, если я ошибаюсь :) - person dackyD; 25.01.2012
comment
Совершенно верно. В этом был смысл моего первого абзаца, они идут вместе и невозможно использовать одно без другого. - person rds; 25.01.2012
comment
это утверждение неверно. вы действительно можете использовать AccountManager автономно (без SyncAdapter/ContentProvider) - person deviant; 31.08.2016
comment
@deviant Мой ответ был правильным, когда я его написал, и если вы прочитаете ошибку, на которую я ссылаюсь, вы поймете, что можете использовать AccountManager автономно, начиная с Android 2.2. Я обновил ответ. - person rds; 06.09.2016
comment
Существует также библиотека для управления учетными записями в Android здесь. - person Ali Nem; 25.09.2016

Класс AccountManager интегрирован с вашими телефонными учетными записями. Итак, если вы будете следовать всем инструкциям и правильно работать, вы увидите свои учетные записи в меню «Настройки-> учетные записи и синхронизация». Оттуда вы можете настроить их или даже удалить. Кроме того, accountManager имеет кеш билетов аутентификации для ваших учетных записей. Это можно использовать и в том случае, если вы не планируете синхронизировать свой аккаунт (насколько мне известно).

Если вы не хотите, чтобы ваши учетные записи отображались в этом меню, вам не следует использовать AccountManager и хранить данные учетных записей в другом месте (возможно, в общих настройках) http://developer.android.com/guide/топики/данные/data-storage.html

person Gab    schedule 10.03.2011

Из http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1/:

Первая часть головоломки называется Аутентификатор учетной записи, который определяет, как учетная запись пользователя будет отображаться в настройках «Учетные записи и синхронизация». Для реализации средства проверки подлинности учетной записи требуется 3 компонента: служба, возвращающая подкласс AbstractAccountAuthenticator из метода onBind, действие, предлагающее пользователю ввести свои учетные данные, и XML-файл, описывающий, как ваша учетная запись должна выглядеть при отображении пользователю. Вам также необходимо добавить разрешение android.permission.AUTHENTICATE_ACCOUNTS в файл AndroidManifest.xml.

person Macarse    schedule 27.04.2010
comment
Это хорошая статья, но как вы думаете, AccountManager предназначен только для учетных записей, которые синхронизируют контакты и электронную почту, или мы можем/должны использовать его для всего, что имеет идентификаторы пользователей и пароли? - person Phil; 27.04.2010
comment
@Phil: я никогда не использовал AccountManager, поэтому не могу вам сказать. Помните, что это идет с 2.0, поэтому, если вы хотите работать на устройствах с более низким SDK, вам придется найти другой способ обработки входа. - person Macarse; 27.04.2010
comment
Вы можете использовать менеджер учетных записей для любой учетной записи, синхронизируя любые данные, которые вы храните, любым способом. Посетите github.com/maxpower47/PinDroid, чтобы увидеть пример его использования для синхронизации закладок с базой данных sqlite. . - person maxpower47; 21.06.2011