Mostrar configurações em contas e menu de sincronização para aplicativo Android
-
11-12-2019 - |
Pergunta
Estou implementando um adaptador de sincronização para um aplicativo Android e gostaria de disponibilizar as configurações da conta no menu "Contas e sincronização".Já vi isso ser feito no aplicativo DropBox (conforme mostrado abaixo), mas não consegui encontrar documentação sobre como fazer isso.Adicionei a conta, só quero adicionar um link para as configurações da conta neste menu.
Solução
No seu manifesto do Android, você deve ter uma seção como esta para definir o autenticador da sua conta:
<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>
A tag de metadados acima deve apontar para um arquivo XML que define sua conta, assim:
<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"/>
O atributo android:accountPreferences acima aponta para um arquivo XML que define sua tela de preferências, assim:
<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>
O PreferenceScreen acima iniciará uma intenção de exibir uma tela de configurações, mas você também pode definir as configurações diretamente no arquivo XML.
Outras dicas
Se bem entendi, você deseja exibir a tela "Contas e configurações de sincronização" no seu aplicativo.Para isso você deve disparar um intent para configurações.Use o código fornecido abaixo:
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);
Espero que isso tenha ajudado ...