Показать настройки под аккаунтами и меню синхронизации для приложения для Android

Я использую syncadapter для приложения для Android и хотел бы сделать настройки для учетной записи доступными в меню "Учетные записи и синхронизация". Я видел это в приложении DropBox (как показано ниже), но мне не удалось найти документацию о том, как это сделать. У меня добавлена ​​учетная запись, просто хочу добавить ссылку на настройки учетной записи в этом меню.

enter image description here

Ответы

Ответ 1

В вашем манифесте Android у вас должен быть такой раздел, чтобы определить аутентификатор вашей учетной записи:

<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>

Тег метаданных выше должен указывать на файл XML, который определяет вашу учетную запись, например:

<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"/>

Атрибут android: accountPreferences выше указывает на файл 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="fm.last.android.activity.Preferences.ACCOUNT_SETUP"
            android:targetPackage="fm.last.android"
            android:targetClass="fm.last.android.activity.Preferences" />
    </PreferenceScreen>
</PreferenceScreen>

В приведенном выше PreferenceScreen появится намерение отобразить экран настроек, но вы также можете определить настройки непосредственно в файле XML.

Ответ 2

Если я правильно понял, вы хотите отобразить экран "Учетные записи и настройки синхронизации" из вашего приложения. Для этого вам нужно утаить намерение настроек. Используйте приведенный ниже код:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setComponent(new ComponentName("com.android.providers.subscribedfeeds","com.android.settings.ManageAccountsSettings"));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

Надеюсь, это помогло...