Qual é a melhor maneira de fazer “configurações de aplicativos” no Android? [fechadas]

108

Eu gostaria de armazenar algumas configurações de aplicativo (como a URL de uma API e algumas configurações para teste) para um aplicativo Android.

Eu trabalho principalmente como desenvolvedor .NET , então estou acostumado a usar o arquivo app.configpara essa finalidade. Qual é uma boa maneira de fazer isso no Android?

Tim Almond
fonte

Respostas:

148

Muitos aplicativos podem fornecer uma maneira de capturar as preferências do usuário nas configurações de um aplicativo ou atividade específica. Para oferecer suporte a isso, o Android fornece um conjunto simples de APIs.

As preferências são normalmente pares de valor de nome. Eles podem ser armazenados como “Preferências compartilhadas” em várias atividades em um aplicativo (observe que atualmente não podem ser compartilhados entre processos). Ou pode ser algo que precisa ser armazenado especificamente para uma atividade.

  1. Preferências compartilhadas: As preferências compartilhadas podem ser usadas por todos os componentes (atividades, serviços, etc.) fora dos aplicativos.

  2. Preferências de atividades gerenciadas: Essas preferências só podem ser usadas na atividade e não podem ser usadas por outros componentes do aplicativo.

Preferências Compartilhadas:

As preferências compartilhadas são gerenciadas com a ajuda do getSharedPreferencesmétodo da Contextclasse. As preferências são armazenadas em um arquivo padrão (1) ou você pode especificar um nome de arquivo (2) a ser usado para se referir às preferências.

(1) Aqui está como você obtém a instância ao especificar o nome do arquivo

public static final String PREF_FILE_NAME = "PrefFile";
   SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);

MODE_PRIVATEé o modo de operação das preferências. É o modo padrão e significa que o arquivo criado será acessado apenas pelo aplicativo de chamada. Outros dois modos suportados são MODE_WORLD_READABLEe MODE_WORLD_WRITEABLE. Em MODE_WORLD_READABLEoutro aplicativo pode ler o arquivo criado, mas não pode modificá-lo. No caso de MODE_WORLD_WRITEABLEoutros aplicativos também tem permissão de gravação para o arquivo criado.

(2) A forma recomendada é usar o modo padrão, sem especificar o nome do arquivo

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);

Finalmente, uma vez que você tenha a instância de preferências, aqui está como você pode recuperar os valores armazenados das preferências:

 int storedPreference = preferences.getInt("storedInt", 0);

Para armazenar valores no arquivo de preferência, o SharedPreference.Editorobjeto deve ser usado. Editoré a interface aninhada da SharedPreferenceclasse.

SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();

O Editor também oferece suporte a métodos como remove()e clear()para excluir o valor de preferência do arquivo.

Preferências de atividade:

As preferências compartilhadas podem ser usadas por outros componentes do aplicativo. Mas se você não precisa compartilhar as preferências com outros componentes e deseja ter preferências de atividades privadas. Você pode fazer isso com a ajuda do getPreferences()método da atividade. O getPreferencemétodo usa o getSharedPreferences()método com o nome da classe de atividade para o nome do arquivo de preferência.

A seguir está o código para obter preferências

SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);

O código para armazenar valores também é o mesmo que no caso de preferências compartilhadas.

SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();

Você também pode usar outros métodos, como armazenar o estado da atividade no banco de dados. Observação Android também contém um pacote chamado android.preference. O pacote define classes para implementar a IU de preferências do aplicativo.

Para ver mais alguns exemplos, verifique a postagem sobre armazenamento de dados do Android no site de desenvolvedores.

Pentium10
fonte
1
obrigado. Parece que o que preciso fazer é usar um arquivo XML para o que estou procurando (ou talvez use o XML como os dados para carregar inicialmente), mas o material de preferência é útil para outra parte do meu projeto.
Tim Almond de
1
Você pode usar o arquivo xml para init. Você precisa ligar para algo comoPreferenceManager.setDefaultValues(this, R.xml.profiles_preferences, false);
Pentium10
3
Este guia também pode ser útil: developer.android.com/guide/topics/ui/settings.html
Hung Tran
1
+1. Apenas um pequeno detalhe para se lembrar. Depois de definir o valor no preferencesobjeto, a chamada editor.apply()é recomendada, editor.commit()pois a primeira irá lidar com o salvamento em segundo plano.
Anindya Chatterjee
2
Estou um pouco confuso aqui. O sharedPreferences é para armazenar as configurações do usuário sobre o aplicativo, não as configurações de aplicativos. O usuário (e eu também) queria saber onde armazenar as configurações do aplicativo, ex API url ou outras configurações que o aplicativo usa para funcionar corretamente.
albanx