Всем нравится, когда вы помните их имена. Одна из самых простых и наиболее эффективных вещей, которую вы можете сделать, чтобы ваше приложение было более привлекательным – это помнить кто ваш пользователь, особенно когда пользователь переходит на новое устройство или начинает использовать планшет также как телефон. Но как узнать кто ваш пользователь? Тем более как узнать его на новом устройстве?
Для многих приложений ответ – AccountManager API. С разрешения пользователя, вы можете использовать Account Manager для извлечения имен учетных записей, которые пользователь хранит на устройстве.
Интеграция с учетными записями пользователя позволяет делать множество вещей, таких как:
- Автоматическое заполнение форм с адресом электронной почты пользователя.
- Получение идентификатора, который связан с пользователем, а не устройством.
Подходит ли вам AccountManager?
Приложения обычно пытаются вспомнить пользователя с помощью одного из трех методов:
- Попросить пользователя ввести его имя
- Получить уникальный идентификатор устройства, чтобы запомнить его
- Получить встроенную учетную запись из AccountManager
Вариант (а) является проблематичным. Во-первых, заставляя пользователя ввести что-то перед входом в ваше приложение автоматически делает приложение менее привлекательными. Во-вторых, нет никакой гарантии, что имя пользователя будет уникальным.
Вариант (b) менее обременителен для пользователя, но возникает сложность в получении прав. Но более важно то, что это позволяет помнить пользователя на одном устройстве. Представьте себе разочарование человека, который переходит на использование нового блестящего устройства, только чтобы обнаружить, что ваше приложение уже не помнит его.
Вариант (c) является предпочтительным методом. Менеджер позволяет Вам получить информацию об аккаунтах, которые хранятся на устройстве пользователя. Как мы увидим в этом уроке, использование Account Manager позволяет помнить пользователя, независимо от того, сколько устройств он использует, добавляется лишь несколько дополнительных нажатий в пользовательскогм интерфейсе.
Какой тип учетной записи использовать?
Android устройство может хранить несколько аккаунтов от разных сервисов. При запросе у AccountManager имен учетных записей, вы можете отфильтровать результат по типам аккаунтов. Тип аккаунта – это строка, которая однозначно идентифицирует объект, выдавший аккаунт. Например, аккаунты Google имеют тип “com.google”, в то время как Twitter использует “com.twitter.android.auth.login”.
Запрос разрешения GET_ACCOUNT
Для того чтобы получить список учетных записей, сохраненных на устройстве, ваше приложение нуждается в разрешенииGET_ACCOUNTS. Добавте тег <uses-permission> в ваш файл манифеста, чтобы получить это разрешение:
1 2 3 4 |
<span class="sc3"><span class="re1"><manifest</span> ... <span class="re2">></span></span> <span class="sc3"><span class="re1"><uses-permission</span> <span class="re0">android:name</span>=<span class="st0">"android.permission.GET_ACCOUNTS"</span> <span class="re2">/></span></span> ... <span class="sc3"><span class="re1"></manifest<span class="re2">></span></span></span> |
Запрос у AccountManager список аккаунтов
Как только вы решите какой тип аккаунта вас интересует, вам будет необходимо запросить аккаунты данного типа. Получить экземпляр AccountManager вызвав AccountManager.get(). Затем использовать этот экземпляр для вызоваgetAccountsByType().
1 2 3 |
AccountManager am = AccountManager.<span class="me1">get</span><span class="br0">(</span><span class="kw2">this</span><span class="br0">)</span><span class="sy0">;</span> <span class="co1">// "this" references the current Context</span> Account<span class="br0">[</span><span class="br0">]</span> accounts = am.<span class="me1">getAccountsByType</span><span class="br0">(</span><span class="st0">"com.google"</span><span class="br0">)</span><span class="sy0">;</span> |
Этот вызов вернет массив объектов Account. Если в массиве более одной учетной записи, вы должны представить пользователю диалоговое окно с запросом для выбора одного аккаунта.
Использование объекта Account для персонализации приложения
Объект Account содержит имя учетной записи, для учетных записей Google – это адрес электронной почты. Вы можете использовать эту информацию несколькими способами, такими как:
- Как предложения в формах ввода, чтобы пользователю не нужно было вводить информацию об учетной записи вручную.
- В качестве ключа для вашей собственной онлайн базы данных использования и персональной информации.
Достаточно ли только имени учетной записи?
Имя учетной записи – это хороший способ помнить пользователя, но объект Account сам по себе не защищает ваши данные или предоставляет вам доступ к чему-либо, кроме имени учетной записи пользователя. Если ваше приложение должно позволять пользователю выходить в интернет для доступа к личным данным, вам понадобится что-нибудь покрепче: аутентификация. Следующий урок объясняет, как пройти проверку подлинности на существующих онлайн-сервисах. 3 урок учит написанию пользовательской аутентификации, так что вы сможете создавать свои собственные типы аккаунтов.
Перевод kraY