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 m 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
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+
0sem comentários ainda