0

我已经为我的应用程序创建了我的自定义身份验证器。我现在已经到了允许用户删除他们的帐户的地步,如果他们愿意的话。我知道我在身份验证器 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是我定义PreferenceScreenXML 的地方。这就是我遇到麻烦的地方...据我了解,我定义的首选项android:accountPreferences是最终用户在设备设置下单击其帐户时显示的内容。但是,我如何阅读这些偏好?或者为每个偏好处理点击事件?我希望做的就是允许用户直接从操作系统提供的首选项屏幕中删除他们的帐户。

我已经在 SO 上查看了其他潜在的解决方案:

Android:读取身份验证器 xml 中设置的首选项

Android 帐户验证器:在首选项屏幕中区分帐户

无法访问在 Android 的帐户身份验证器中设置的首选项

但是,我可以从这些先前的问题中找到的最佳答案是在 中包含一个<intent>标签<PreferenceScreen>并启动您定义的设置活动。但是,这对我来说没有意义……我查看了我的个人手机,并且我拥有的每个帐户都显示了一个偏好屏幕,该屏幕显示为操作系统原生。我不应该以同样的方式定义我的偏好吗?我看过三星 Galaxy S9 和 Pixel 3,两者的设置屏幕都是原生的。

我怎样才能达到同样的效果?更重要的是,我如何与这些设置进行交互?与往常一样,我们将非常感谢您对此提供的任何帮助!

4

1 回答 1

0

万一其他人遇到这个问题,我可以自己解决。我最终想要的是拥有由 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>

希望对大家有所帮助。如果您有任何问题,请告诉我。

于 2018-11-30T20:01:19.410 回答