...
🤳 Блог Android новостей, посвященный советам экспертов, новостям, обзорам, телефонам Android, приложениям, инструкциям, планшетам и мобильным телефонам.

Как реализовать автозаполнение в приложениях Android 8.0 Oreo

423

Набор текста на меньшем экране смартфона или планшета всегда отнимает много времени и утомляет, но это усиливается, когда приложения постоянно запрашивают одну и ту же информацию. Сколько раз вы вводили свой адрес электронной почты на экране входа в приложение? Или ввели номер кредитной карты в платежной операции?

А если вы разработчик, то отображение формы или даже простого экрана входа в систему может быть рискованным делом; потенциально может привести к тому, что пользователи покинут ваше приложение и никогда не вернутся.

Однако с введением Android Oreo Autofill Framework ввод данных станет намного проще, чем когда-либо на платформе Android, а преимущества для разработчиков двоякие: вы можете улучшить взаимодействие с пользователями, одновременно увеличивая ваши шансы получить полезные пользовательские данные.

В этой статье я собираюсь показать вам, как обеспечить, чтобы все «автозаполняемые» поля вашего приложения были готовы к получению данных из любой службы автозаполнения, установленной пользователем на своем устройстве, а также поделимся передовыми практиками, чтобы убедиться, что вы максимально использовать возможности Android Oreo.

Как работает автозаполнение?

Платформа Autofill Framework может обнаруживать и сохранять типы данных, которые приложения, скорее всего, запрашивают, включая пароли, почтовые адреса и данные кредитной карты.

Хотя Autofill Framework является функцией Android 8.0, пользователю также необходимо установить специальное приложение «службы автозаполнения», которое может взаимодействовать с этой структурой. Затем, когда система Android обнаружит, что пользователь ввел некоторую новую информацию в автозаполняемое поле, она представит диалоговое окно с вопросом, хотят ли они сохранить эту информацию в выбранной ими службе автозаполнения, после чего она будет доступна другим Приложения. Если они коснутся «Сохранить», то в следующий раз, когда пользователь выберет представление, запрашивающее ту же информацию, система отобразит средство выбора автозаполнения, содержащее все соответствующие наборы данных, хранящиеся в службе автозаполнения.

Как реализовать автозаполнение в приложениях Android 8.0 Oreo

Когда приложение запрашивает информацию из, или информации товаров в службу автозаполнения, он известен как клиент автозаполнения.

Подсказки для автозаполнения

Если ваше приложение использует стандартные представления, то по умолчанию оно должно работать с любой службой автозаполнения, которая использует эвристику для определения типа данных, ожидаемых каждым представлением. Однако не все службы автозаполнения используют этот вид эвристики; некоторые полагаются на само представление, чтобы объявить тип ожидаемых данных.

Чтобы ваше приложение могло взаимодействовать с Autofill Framework независимо от службы автозаполнения, которую пользователь установил на своем устройстве, вам необходимо добавить атрибут android: autofillHints в каждое представление, которое может отправлять и получать данные автозаполнения.

Давайте посмотрим, как бы вы обновили проект, чтобы предоставить подсказки для автозаполнения. Создайте новый проект, ориентированный на Android Oreo, а затем создайте базовый экран входа в систему, состоящий из двух EditTexts, которые принимают имя пользователя и пароль:

<?xml version="1.0" encoding="utf-8"?>

Затем вам нужно будет добавить атрибут android: autofillHints к каждому представлению и установить для него одну из поддерживаемых констант автозаполнения :

  • EditText имени пользователя ожидает имя пользователя, поэтому добавьте android: autofillHints = “username”
  • Password EditText ожидает пароль, поэтому нам нужно добавить android: autofillHints = “password”

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

Тестирование вашего приложения с автозаполнением

Вы можете протестировать функцию автозаполнения только на устройстве под управлением Android Oreo, поэтому, если ваш смартфон или планшет не получил обновление Android 8.0, вам необходимо создать виртуальное устройство Android (AVD), работающее под управлением Android API уровня 26. или выше. Затем вам нужно будет установить свой проект на это устройство, выбрав «Выполнить> Выполнить» на панели инструментов Android Studio.

Наконец, вам понадобится приложение, способное предоставлять данные для автозаполнения. Хотя вы можете использовать одну из сторонних служб автозаполнения, доступных через Google Play, Google создал специальный образец приложения Android Autofill Framework, который включает в себя несколько функций, разработанных, чтобы помочь вам протестировать поддержку автозаполнения в вашем приложении, так что это услуга, которую я м собираюсь использовать.

Соберите и установите образец проекта Google Autofill Framework.

  • Выберите «Файл»> «Создать»> «Импортировать образец» на панели инструментов Android Studio.
  • Выберите “Android O Preview> Autofill Framework”.
  • Нажмите “Далее> Готово”.

Android Studio теперь импортирует приложение Autofill Framework как новый проект. Если Android Studio предлагает обновить плагин Gradle, выберите «Обновить».

На момент написания в этом проекте все еще используется поддержка Java 8.0, предоставляемая устаревшим компилятором Jack, поэтому откройте файл build.gradle на уровне модуля и удалите следующее:

jackOptions {
   enabled 

Если вы посмотрите на манифест, вы увидите, что у этого проекта есть две активности запуска:

<application
   android:allowBackup="true"
   android:icon="@mipmap/ic_launcher"
   android:label="@string/app_name"
   android:supportsRtl="true"
   android:theme="@style/Theme.AppCompat.Light">

Установите этот проект на свое устройство AVD или Android, и вы увидите, что он переводится в два автономных приложения:

Как реализовать автозаполнение в приложениях Android 8.0 Oreo

Приложение Autofill Settings представляет собой фактическую службу автозаполнения, а приложение Autofill Sample состоит из различных действий, демонстрирующих сценарии, в которых вы обычно будете использовать функции автозаполнения, такие как экраны входа и оплаты.

Активируйте автозаполнение Android Oreo

Автозаполнение по умолчанию отключено; чтобы включить его, вам нужно указать службу автозаполнения, которую вы хотите использовать:

  • Откройте приложение “Настройки” вашего устройства.
  • Перейдите в “Система> Языки и ввод> Дополнительно> Автозаполнение”.
  • Выберите “Multi-Dataset Autofill Service”, который является приложением службы автозаполнения Google.

Как реализовать автозаполнение в приложениях Android 8.0 Oreo

Прочтите предупреждение на экране и, если вы готовы продолжить, нажмите «ОК».

Предоставьте некоторые данные

Если мы собираемся протестировать способность нашего приложения получать данные от службы автозаполнения, то службе автозаполнения потребуются некоторые данные, которые она может предоставить этому приложению.

Есть простой способ передать данные в службу автозаполнения:

  • Загрузите любое другое приложение, которое ожидает рассматриваемые данные – в данном случае это любое приложение, в котором мы можем ввести имя пользователя и пароль.
  • Введите эти данные в заявку.
  • При появлении запроса сохраните эти данные в сервисе автозаполнения.
  • Переключитесь на приложение, которое хотите протестировать.
  • Выберите представление, которое вы хотите протестировать, а затем посмотрите, сработает ли автозаполнение и предложит ли заполнить это представление за вас.

Удобно, что приложение Autofill Sample содержит действие входа, которое ожидает комбинацию имени пользователя и пароля:

  • Запустите приложение Autofill Sample.
  • Выберите «Образец входа с использованием EditTexts».

Как реализовать автозаполнение в приложениях Android 8.0 Oreo

  • Введите поддельное имя пользователя и пароль. Обратите внимание, что особенность этого действия состоит в том, что имя пользователя и пароль должны быть точно такими же, чтобы он мог принять ваш ввод, поэтому, если вы используете «тестирование» в качестве имени пользователя, вам также придется использовать «тестирование» в качестве пароля., Также имейте в виду, что служба автозаполнения Google хранит свои данные в SharedPreferences, поэтому любой, у кого есть root-доступ к вашему устройству, потенциально может увидеть эти данные.
  • Как правило, вам необходимо отправить данные до того, как служба автозаполнения предложит их сохранить, поэтому нажмите кнопку «Войти».
  • Щелкните “Сохранить”.

Как реализовать автозаполнение в приложениях Android 8.0 Oreo

Протестируйте свое приложение

  • Запустите приложение экрана входа в систему, которое мы создали ранее в этом руководстве.
  • Коснитесь поля «Имя пользователя». На этом этапе должно появиться средство выбора автозаполнения.
  • Выберите набор данных, который вы хотите использовать, и все представления, представленные в этом наборе данных, будут автоматически заполнены, поэтому представления с именем пользователя и паролем должны автоматически заполняться одновременно.

Оптимизация вашего приложения для автозаполнения

Хотя этого достаточно для реализации основных функций автозаполнения в вашем приложении, вы можете предпринять некоторые дополнительные шаги, чтобы убедиться, что ваше приложение обеспечивает наилучшие возможности автозаполнения.

В этом заключительном разделе я собираюсь рассмотреть несколько способов оптимизации приложения для автозаполнения.

Вид важен или не важен?

По умолчанию операционная система Android отвечает за определение того, является ли представление «важным» или «неважным» для автозаполнения.

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

Хотя Android должен уметь правильно определять «важные» автозаполняемые представления, полагаясь на систему, которая интерпретирует желаемое поведение, всегда есть место для неправильной интерпретации, плюс нет никакой гарантии, что поведение Android по умолчанию не изменится в будущем обновлении.

Чтобы убедиться, что ваше приложение правильно взаимодействует с автозаполнением, вам следует уточнить, какие представления важны для автозаполнения, используя android: importantForAutofill и одно из следующих значений:

  • “авто.” Android вправе решать, важно ли это представление для автозаполнения – по сути, это поведение системы по умолчанию.
  • “да.” Это представление и все его дочерние представления важны для автозаполнения.
  • «Нет». Этот вид не важен для автозаполнения. Иногда вы можете улучшить взаимодействие с пользователем, пометив определенные просмотры как неважные, например, если ваше приложение включает CAPTCHA, тогда фокусировка на этом поле может вызвать меню выбора автозаполнения, которое просто ненужное беспорядок на экране, отвлекая пользователя от чего они пытаются достичь. В этом сценарии вы можете улучшить взаимодействие с пользователем, отметив это представление как android: importantForAutofill = «no».
  • «NoExcludeDescendants». Представление и все его дочерние элементы не важны для автозаполнения.
  • «YesExcludeDescendants». Представление важно для автозаполнения, но все его дочерние представления не важны.

В качестве альтернативы вы можете использовать метод setImportantForAutofill, который принимает следующее:

  • IMPORTANT_FOR_AUTOFILL_AUTO.
  • IMPORTANT_FOR_AUTOFILL_YES.
  • IMPORTANT_FOR_AUTOFILL_NO.
  • IMPORTANT_FOR_AUTOFILL_YES_EXCLUDE_DESCENDANTS
  • IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS.

Например:

.setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS);

Сделать запрос на автозаполнение

В большинстве случаев жизненный цикл автозаполнения запускается автоматически в ответ на notifyViewEntered (View), который вызывается, когда пользователь входит в представление, поддерживающее автозаполнение. Однако иногда вам может потребоваться инициировать запрос автозаполнения в ответ на действие пользователя, например, если пользователь долго нажимает на поле.

Вы можете принудительно запросить автозаполнение с помощью requestAutofill(), например:

public void eventHandler(View view) 

Проверьте, включено ли автозаполнение

Вы можете решить предложить дополнительные функции, когда включено автозаполнение, например, пункт «Автозаполнение» в контекстном меню переполнения вашего приложения. Однако, поскольку никогда не стоит вводить пользователей в заблуждение, предлагая функции, которые ваше приложение в настоящее время не может предоставить, вы всегда должны проверять, включено ли в настоящее время автозаполнение, а затем соответствующим образом настраивать свое приложение, например, удалив «Автозаполнение» из контекстного меню, если автозаполнение отключено.

Проверить, доступно ли автозаполнение, можно, вызвав метод isEnabled () объекта AutofillManager:

if

Обмен данными между вашим сайтом и приложением

Разработчики все чаще предлагают те же функции через специальное мобильное приложение и через свой веб-сайт, например, может быть приложение Facebook для Android, но вы также можете войти на www.facebook.com в своем мобильном браузере.

Если у вас есть веб-сайт, связанный с вашим приложением, вы можете предупредить Autofill Framework, что он должен совместно использовать данные автозаполнения между этими двумя средами.

Чтобы создать эту связь между вашим приложением и вашим веб-сайтом, вам необходимо создать файл ссылок на цифровые активы, а затем загрузить этот файл в свой домен:

  • Откройте проект Android, который вы хотите связать со своим сайтом.
  • Выберите «Вид»> «Окно инструментов»> «Помощник» на панели инструментов Android Studio, после чего откроется окно «Помощник по ссылкам на приложения».
  • Нажмите кнопку «Открыть генератор файлов ссылок на цифровые активы».
  • Введите домен, который вы хотите связать со своим приложением.
  • Введите конфигурацию подписи вашего приложения или выберите файл хранилища ключей. Обратите внимание, что если вы используете конфигурацию отладки или хранилище ключей, то в конечном итоге вам потребуется сгенерировать и загрузить новый файл ссылок на цифровые активы, который использует ключ выпуска вашего приложения.
  • Нажмите кнопку «Создать файл ссылок на цифровые активы».
  • Загрузите файл цифровых активов (файл assetlinks.json), нажав кнопку «Сохранить файл».
  • Загрузите следующий файл assetlinks.json по этому точному адресу: https: // <ваш сайт> /.well-known/assetlinks.json.

Заключение

Автозаполнение добавляет некоторые новые преимущества Android для конечных пользователей. Как разработчик вы должны убедиться, что ваше приложение в полной мере использует эти преимущества, и, как видите, это не так уж и много работы. Вы уже реализовали какие-либо функции Oreo в своих проектах? Дайте нам знать в комментариях ниже!

Источник записи: https://www.androidauthority.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее