Как я могу добавить категорию в мой SyncAdapter

Я попробовал отличный пример Google для синхронизации контактов из веб-службы, и это прекрасно работает. Это называется SampleSyncAdapter и действительно того стоит: http://developer.android.com/resources/samples/SampleSyncAdapter/index.html

У меня все получилось, но я не могу найти ни в примере, ни в документации способ добавить категорию, которая бы ссылалась на пользовательское действие, как на скриншоте ниже:

(У меня есть только опция синхронизации учетной записи с флажком)

Итак, мой вопрос: как я могу добавить категорию настроек учетной записи?

1 ответ

kingston дает ссылку на общее решение. Вот как изменить исходный код SampleSyncAdapter для добавления пользовательских настроек (Android 2.3.4), которые выглядят как на снимке экрана выше:

  1. Помните, что менеджер учетных записей работает как системный процесс, поэтому телефон будет зависать, если в вашем коде есть необработанное исключение, пропущенная запись манифеста или ошибка в вашем xml.

  2. Создать 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>
    
  3. Добавить ссылку на 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" />
    
  4. Создайте действие предпочтений и добавьте его в манифест. Я использовал упрощенную версию примера кода из ответа на вопрос " Как управлять настройками адаптера синхронизации 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>
    
  5. Вот и все. Установите код, откройте учетные записи и выберите свою учетную запись SampleSyncAdapter (user1). Выберите настройки учетной записи, и вы увидите активность настройки.

http://i49.tinypic.com/5d6ve0.jpg

Другие вопросы по тегам