SharedPreferences, salvando configurações chave/valor no Android
Em muitos casos, necessitamos armazenar pequenas informações em nossos aplicativos, informações simples como data do último acesso ao servidor, a pontuação de um jogo ou simplesmente as configurações de um aplicativo da última vez que ele foi aberto.
Neste casos utilizar o banco de dados seria muito trabalhoso, como utilizar um martelo para matar uma mosca. A plataforma Android nos fornece uma alternativa o SharedPreferences que permite o armazenamento simples de chave/valor.
O armazenamento dos valores de um SharedPreferences é feito através de um arquivo, que ficar armazenado dentro da pasta de nossa aplicação.
Para criarmos um arquivo de preferências podemos fazer de duas formas:
Context context = this;
SharedPreferences sharedPref = context.getSharedPreferences(Context.MODE_PRIVATE);
Irá criar um arquivo de preferencias na pasta /data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PACKAGE_NAME_preferences.xml
Irá criar um arquivo de preferencias na pasta /data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PACKAGE_NAME_preferences.xml
Context context = this;
SharedPreferences sharedPref = context.getSharedPreferences("YOUR_PREFS_NAME",Context.MODE_PRIVATE);
Irá criar um arquivo de preferencias na pasta /data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml
Nas duas formas podemos ter três tipos de acesso, Context.MODE_PRIVATE
(somente sua aplicação tem acesso), Context.MODE_WORLD_READABLE
(qualquer aplicação pode ler), Context.MODE_WORLD_WRITEABLE
(qualquer aplicação pode escrever), sendo os dois últimos tipos de acesso muito perigosos e não devem ser utilizados mais já que foram deprecated.
Para ler os valores de um arquivo de preferência utilizamos os seus métodos get
.
int valorInteiro = sharedPref.getInt("valorInteiro", 0);
float valorFloat = sharedPref.getFloat("valorFloat", 0.0f);
boolean valorBoolean = sharedPref.getBoolean("valorBoolean", false);
String valorString = sharedPref.getString("valorString", "valor padrão");
Set<String> valorSet = sharedPref.getStringSet("valorSet", new HashSet<String>() );
Para cada um dos métodos, o primeiro valor de parâmetro é o identificador da propriedade, ou seja o valor que queremos pegar, o segundo valor é o valor default ou seja se a chave não estiver presente no arquivo de preferência o método irá retornar este valor.
Para escrever um valor no nosso SharedPreferences
devemos pegar dele um objeto SharedPreferences.Editor
que irá permitir a edição através dos seus métodos put
.
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt("valorInteiro", 10);
editor.putFloat("valorFloat", 104.76f);
editor.putBoolean("valorBoolean", true);
editor.putString("valorString", "Um nome qualquer");
Set<String> set = new HashSet<String>();
set.add("Valor 1");
set.add("Valor 2");
set.add("Valor 3");
editor.putStringSet("valorSet", set );
editor.commit();
Não devemos esquecer de após ter feitas todas as alterações que desejamos chamar o método commit()
pois é ele que efetivamente grava as informações no arquivo.
Os códigos acima irão criar o seguinte arquivo dentro do nosso dispositivo
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<float name="valorFloat" value="104.76" />
<boolean name="valorBoolean" value="true" />
<string name="valorString">Um nome qualquer</string>
<string name="teste">Olá</string>
<int name="valorInteiro" value="10" />
<set name="valorSet">
<string>Valor 3</string>
<string>Valor 2</string>
<string>Valor 1</string>
</set>
</map>
Falou!!! T+