Как я могу добавить категорию в мой SyncAdapter
Я попробовал отличный пример Google для синхронизации контактов из веб-службы, и это прекрасно работает. Это называется SampleSyncAdapter и действительно того стоит: http://developer.android.com/resources/samples/SampleSyncAdapter/index.html
У меня все получилось, но я не могу найти ни в примере, ни в документации способ добавить категорию, которая бы ссылалась на пользовательское действие, как на скриншоте ниже:
(У меня есть только опция синхронизации учетной записи с флажком)
Итак, мой вопрос: как я могу добавить категорию настроек учетной записи?
1 ответ
kingston дает ссылку на общее решение. Вот как изменить исходный код SampleSyncAdapter для добавления пользовательских настроек (Android 2.3.4), которые выглядят как на снимке экрана выше:
Помните, что менеджер учетных записей работает как системный процесс, поэтому телефон будет зависать, если в вашем коде есть необработанное исключение, пропущенная запись манифеста или ошибка в вашем xml.
Создать
account_preferences.xml
файл ресурсов.- Фактические настройки экрана
android:key
значение должно быть указано как"account_settings"
, - Если вы хотите поместить свои пользовательские настройки в категорию, вам необходимо закрыть
PreferenceCategory
тег, когда вы определяете это; если вы положитеPreferenceScreen
внутри категории телефон будет зависать при нажатии на настройки.
XML:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="General Settings" /> <PreferenceScreen android:key="account_settings" android:title="Account Settings" android:summary="Sync frequency, notifications, etc."> <intent android:action="com.example.android.samplesync.ACCOUNT_SETUP" android:targetPackage="com.example.android.samplesync" android:targetClass="com.example.android.samplesync.AccountPreferences" /> </PreferenceScreen> </PreferenceScreen>
- Фактические настройки экрана
Добавить ссылку на
account_preferences.xml
в концеauthenticator.xml
:<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android" android:accountType="com.example.android.samplesync" android:label="@string/label" android:icon="@drawable/icon" android:smallIcon="@drawable/icon" android:accountPreferences="@xml/account_preferences" />
Создайте действие предпочтений и добавьте его в манифест. Я использовал упрощенную версию примера кода из ответа на вопрос " Как управлять настройками адаптера синхронизации Android?,
а. Добавьте действие в манифест:
<activity android:label="Account Preferences" android:name=".AccountPreferences" android:theme="@android:style/Theme.Dialog" android:excludeFromRecents="true" />
б. Вот самый тривиальный
AccountPreferences.java
:public class AccountPreferences extends PreferenceActivity { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); addPreferencesFromResource(R.xml.preferences_resources); } }
с. Вот
preferences_resources.xml
с жестко закодированными строками:<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="Privacy preferences"/> <CheckBoxPreference android:key="privacy_contacts" android:defaultValue="true" android:summary="Keep contacts private" android:title="Contacts"/> <PreferenceCategory android:title="Outgoing"/> <CheckBoxPreference android:key="allow_mail" android:defaultValue="true" android:summary="Allow email" android:title="Email"/> </PreferenceScreen>
Вот и все. Установите код, откройте учетные записи и выберите свою учетную запись SampleSyncAdapter (user1). Выберите настройки учетной записи, и вы увидите активность настройки.