Как использовать настройки по умолчанию для пользовательского аутентификатора? - PullRequest
0 голосов
/ 30 ноября 2018

Я создал свой пользовательский аутентификатор для своего приложения.Теперь я дошел до того, что хочу разрешить пользователям удалять свою учетную запись, если они захотят это сделать.Я знаю, что я определяю экран настроек для моего аутентификатора в моем XML-файле аутентификатора:

<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
    android:accountType="@string/authentication_account_type"
    android:icon="@drawable/ic_launcher"
    android:smallIcon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:accountPreferences="@xml/authenticator_preferences" />

Последний атрибут, android:accountPreferences, - это то, где я определяю PreferenceScreen XML.Вот где у меня проблемы ... Насколько я понимаю, предпочтения, которые я определяю в android:accountPreferences, это то, что отображается, когда конечный пользователь нажимает на свою учетную запись в настройках устройства.Тем не менее, как я могу читать из этих предпочтений?Или обрабатывать события клика для каждого предпочтения?Все, что я надеюсь сделать, - это позволить пользователю удалить свою учетную запись прямо с экрана настроек, который предоставляется ОС.

Я смотрел на другие потенциальные решения, которые уже есть на SO:

Android: чтение настроек, установленных в authenticator xml

Аутентификатор учетной записи Android: различать учетные записи на экране настроек

Невозможно получить доступ к настройкам, установленным в account-authenticator в Android

Однако лучший ответ, который я могу найти из этихпредыдущий вопрос - включить тег <intent> в <PreferenceScreen> и запустить заданное вами действие по настройке.Тем не менее, это не имеет смысла для меня ... Я посмотрел на свой личный телефон, и у каждой моей учетной записи отображается экран настроек, который кажется родным для ОС.Разве я не могу определить свои предпочтения таким же образом?Я смотрел как на Samsung Galaxy S9, так и на Pixel 3, и оба экрана настроек выглядят как родные.

Как добиться того же эффекта?Что еще более важно, как я могу взаимодействовать с этими настройками?Как всегда, любая помощь по этому вопросу будет принята с благодарностью!

1 Ответ

0 голосов
/ 30 ноября 2018

В случае, если кто-то еще столкнется с этой проблемой, я смог разобраться сам.В конечном итоге я искал экран настроек, предлагаемый самой ОС Android, а не определял мой собственный экран настроек.Оказывается, решение действительно простое: просто не определяйте экран настроек учетной записи в своем аутентификаторе. XML:

<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
    android:accountType="@string/authentication_account_type"
    android:icon="@drawable/ic_launcher"
    android:smallIcon="@drawable/ic_launcher"
    android:label="@string/app_name" />

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

Кроме того, если вы хотите переопределитьЭкран настроек по умолчанию, предлагаемый ОС, тогда вы должны использовать android:accountPreferences="@xml/authenticator_preferences".Вы можете запустить действие для <Preference> или <PreferenceScreen>, которое вы определили, используя атрибут <intent>.

Надеюсь, что все поможет.Дайте знать, если у вас появятся вопросы.

...