13.3.1. 更新首选项
13.3.1.更新首选项
在将用户的位置信息广播出去之前,我们需要事先征得用户本人的同意。这不只是个人偏好,更牵涉到个人隐私。首选项就是询问用户本人意愿的一个好地方。在这里,我们可以使用ListPreference。它可以提供一列选项,同时为每个选项对应一个值。
为此我们在strings.xml中添加两列string资源:一列给用户看,表示选项的正文;一列表示每一选项对应的值。修改后的string.xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
...
<string-array name="providers">
<item>None, please</item>
<item>GPS via satellites!</item>
<item>Mobile Network will do</item>
</string-array>
<string-array name="providerValues">
<item>NONE</item>
<item>gps</item>
<item>network</item>
</string-array>
</resources>
留意这两列string资源是一一对应的,因此其下的条目数相等。
已经有了选项的名与值,接下来修改prefs.xml。
例 13.6. 修改过的 res/xml/prefs.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<EditTextPreference android:title="@string/titleUsername"
android:summary="@string/summaryUsername" android:key="username"></EditTextPreference>
<EditTextPreference android:title="@string/titlePassword"
android:password="true" android:summary="@string/summaryPassword"
android:key="password"></EditTextPreference>
<EditTextPreference android:title="@string/titleApiRoot"
android:summary="@string/summaryApiRoot" android:key="apiRoot"></EditTextPreference>
<ListPreference android:title="@string/titleProvider"
android:summary="@string/summaryProvider" android:key="provider"
android:entryValues="@array/providerValues" android:entries="@array/providers" />
<!-- -->
<ListPreference android:entryValues="@array/intervalValues"
android:summary="@string/summaryUpdaterInterval" android:title="@string/titleUpdaterInterval"
android:entries="@array/interval" android:key="interval"></ListPreference>
</PreferenceScreen>
- 新加的ListPreference提供了三个选项:通过GPS、通过网络、不跟踪位置。