8

我想读入我通过身份验证器 xml 文件设置的代码首选项。我发现无法访问在 Android 的帐户身份验证器中设置的首选项和如何访问在 Android 的帐户身份验证器中设置的首选项完全没有答案,另一个说我需要创建自己的活动。这听起来很奇怪,因为这意味着我可以通过 xml 配置的首选项毫无用处,因为我再也无法阅读它们了。那不可能。有人知道更多吗?如果我真的必须创建一个自己的活动,在身份验证器的情况下我将如何做到这一点?

4

1 回答 1

2

AbstractAccountAuthenticator的文档中:

首选项属性指向一个 PreferenceScreen xml 层次结构,该层次结构包含一个 PreferenceScreen 列表,可以调用这些列表来管理身份验证器。一个例子是:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory android:title="@string/title_fmt"/>
    <PreferenceScreen
        android:key="key1"
        android:title="@string/key1_action"
        android:summary="@string/key1_summary">
        <intent
            android:action="key1.ACTION"
            android:targetPackage="key1.package"
            android:targetClass="key1.class"/>
    </PreferenceScreen>
</PreferenceScreen>

因此,尽管可以将个人偏好放入其中,但似乎account_preferences.xml并不打算这样做,因此无法访问这些值。

有关如何设置和处理 PreferenceScreen 意图的详细信息,请参阅此问题和答案。

编辑

对于一个非常基本的工作示例,您可以从Sync Adapter Training Docs下载示例应用程序并进行如下编辑。

创建res/xml/account_preferences.xml看起来像这样

<?xml version="1.0" encoding="UTF-8" ?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory android:title="Category"/>
    <PreferenceScreen
        android:key="key1"
        android:title="@string/app_name"
        android:summary="@string/account_name">
        <intent
            android:targetPackage="com.example.android.network.sync.basicsyncadapter"
            android:targetClass="com.example.android.network.sync.basicsyncadapter.EntryListActivity"/>
    </PreferenceScreen>
</PreferenceScreen>

添加android:accountPreferences="@xml/account_preferences"account-authenticator标签中authenticator.xml

此示例启动示例中的现有活动,但可以轻松启动 PreferenceActivity(或您想要的任何其他活动)。有关如何设置 PreferenceActivity 的详细信息,请参阅设置指南。

有关核心 Android 应用程序的真实示例,请在此处查看电子邮件应用程序的实现。

于 2015-07-01T21:37:32.510 回答