Android SharedPreferences

Android SharedPreferences

Nessa lição vamos aprender como armazenar dados de preferências que podem ser compartilhadas toda vez que o aplicativo for aberto ou até mesmo com outros app’s utilizando Android SharedPreferences.

1- Crie um projeto no chamado AppSharedPreferences

2- Na interface gráfica utilize o LinearLayout e adicione dois editText chamados edtNome e edtTelefone, um botão chamado btSharedpreferences e um textView com id txtDados. O linearlayout deverá ter orientação vertical.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.totemarcal.aappsharedpreferences.MainActivity"
    android:orientation="vertical">


    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPersonName"
        android:ems="10"
        android:id="@+id/edtNome"
        android:hint="Informe seu nome:" />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="phone"
        android:ems="10"
        android:id="@+id/edtTelefone"
        android:hint="Informe seu Número:" />

    <Button
        android:text="Gravar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btSharedpreferences"
        />

    <TextView
        android:text="TextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/txtDados" />
</LinearLayout>

3- Implemente o uso do objeto SharedPreferences para que no clique do botão seja inserida informações de compartilhamento. Quando o aplicativo for aberto novamente irá verificar se existe preferências compartilhadas, em caso verdadeiro elas serão recuperadas.

import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private Button btGravar;
    private TextView txtDados;
    private EditText edtNome, edtTelefone;

    //string que irá armazenar os dados
    private static String MINHAS_PREFERENCIAS = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        txtDados = (TextView) findViewById(R.id.txtDados);
        btGravar = (Button) findViewById(R.id.btSharedpreferences);
        edtNome = (EditText) findViewById(R.id.edtNome);
        edtTelefone = (EditText) findViewById(R.id.edtTelefone);

        //crie as preferencias
        SharedPreferences sharedPreferences = getSharedPreferences(MINHAS_PREFERENCIAS, MODE_PRIVATE);
        //verifique se existe as preferencias 
        if(sharedPreferences.contains("nome")){
            //recupere os valores das preferencias
            String nome = sharedPreferences.getString("nome", "");
            int telefone = sharedPreferences.getInt("telefone", 0);
            txtDados.setText("Nome: " + nome + " Telefone: " + Integer.toString(telefone));
        }else{
            txtDados.setText("Insira seus dados...");
        }

        btGravar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //criar objetos sharedpreferences que irá armazenar os dados
                //a string MINHAS_PREFERENCIAS será o arquivo armazenado
                //MODE_PRIVATE significa protegida, somente o aplicativo podera aletara os dados
                SharedPreferences sharedPreferences = getSharedPreferences(MINHAS_PREFERENCIAS, MODE_PRIVATE);
                //Crie um editor para as preferencias
                SharedPreferences.Editor editor = sharedPreferences.edit();
                //Adicione valores ao editor
                editor.putString("nome", edtNome.getText().toString());
                editor.putInt("telefone", Integer.parseInt(edtTelefone.getText().toString()));
                //Commite os valores no editor
                editor.commit();
            }
        });
    }

}

4- A imagem da esquerda mostra a tela sem preferências cadastradas e a imagem da direta mostra com as preferências recuperadas.

 
shared1

shared2

5- Abaixo segue outros modos de compartilhamento:

MODE_APPEND

Isto adicionará as novas preferências com as preferências já existentes.
MODE_ENABLE_WRITE_AHEAD_LOGGING

Banco de dados aberto sinalizador. Quando ele é definido, ele iria habilitar escrever adiante um og por padrão
MODE_MULTI_PROCESS

Este método verificará a modificação das preferências mesmo se a instância de preferência compartilhada já tiver sido carregada.
MODE_PRIVATE

Ao definir este modo, o arquivo só pode ser acessado usando o aplicativo de chamada.
MODE_WORLD_READABLE

Este modo permite que outras aplicações leiam as preferências.
MODE_WORLD_WRITEABLE

Este modo permite que outras aplicações escrevam as preferências.

 

11 comments

Deixe uma resposta

Specify Google Client ID and Secret in Super Socializer > Social Login section in admin panel for Google Login to work

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *