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+