Android:读取在authenticator xml中设置的首选项

时间:2015-06-24 14:39:19

标签: android android-authenticator

我想阅读我通过authenticator xml文件设置的代码首选项。我发现Can't access preferences set in account-authenticator in AndroidHow can access preferences set in account-authenticator in Android一个完全没有答案,另一个说我需要创建自己的活动。这听起来很奇怪,因为这意味着我可以通过xml配置的首选项是无用的,因为我再也无法读取它们了。那不可能。有人知道更多吗?如果我真的需要创建一个自己的活动,我如何在验证者的情况下这样做?

1 个答案:

答案 0 :(得分:1)

来自AbstractAccountAuthenticator的文档:

  

preferences属性指向PreferenceScreen xml层次结构   包含可以调用的PreferenceScreens列表   管理身份验证器。一个例子是:

<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意图的详细信息,请参阅this问题和答案。

修改

对于一个非常基本的工作示例,您可以从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的详细信息,请参阅Settings指南。

有关Android核心应用的真实示例,请参阅电子邮件应用here的实现。