Show settings under accounts & sync menu for android app

10,913

In your Android Manifest, you should have a section like this to define your account authenticator:

<service android:name="AccountAuthenticatorService"
 android:exported="true" android:process=":auth">
 <intent-filter>
  <action android:name="android.accounts.AccountAuthenticator" />
 </intent-filter>
 <meta-data android:name="android.accounts.AccountAuthenticator"
  android:resource="@xml/authenticator" />
</service>

The meta-data tag above should point to an XML file that defines your account, like this:

<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
    android:accountType="fm.last.android.account"
    android:icon="@drawable/icon"
    android:smallIcon="@drawable/icon"
    android:label="@string/app_name"
    android:accountPreferences="@xml/account_preferences"/>

The android:accountPreferences attribute above points to an XML file that defines your preferences screen, like so:

<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="fm.last.android.activity.Preferences.ACCOUNT_SETUP"
            android:targetPackage="fm.last.android"
            android:targetClass="fm.last.android.activity.Preferences" />
    </PreferenceScreen>
</PreferenceScreen>

The above PreferenceScreen will launch an intent to display a settings screen, but you can also define the settings directly in the XML file.

Share:
10,913

Related videos on Youtube

Patrick Jackson
Author by

Patrick Jackson

Kotlin, Java, Android, Go, ObjC, iOS, App Engine, and all things google. Senior Engineer at Ticketmaster Mobile Studio

Updated on July 14, 2022

Comments

  • Patrick Jackson
    Patrick Jackson almost 2 years

    I am implementing a syncadapter for an android app and would like to make the settings for the account available under the "Accounts & sync" menu. I have seen this done in the DropBox app(as shown below), but I have not been able to find documentation on how to do this. I have the accounted added, just want to add a link to the account settings in this menu.

    enter image description here

  • Patrick Jackson
    Patrick Jackson almost 12 years
    No this not what I am trying to do(although its good to know this). I am trying to add the " general settings" under the.accounts menu as is shown in pic above
  • LOG_TAG
    LOG_TAG almost 9 years
    This old qsn! but Intent intent=new Intent(Settings.ACTION_SYNC_SETTINGS); //ACTION_SETTINGS startActivity(intent); not launching the preference screen !!