Android - Preferenze condivise

Android offre molti modi per memorizzare i dati di un'applicazione. Uno di questi è chiamato Preferenze condivise. Le preferenze condivise consentono di salvare e recuperare i dati sotto forma di chiave, coppia di valori.

Per utilizzare le preferenze condivise, è necessario chiamare un metodo getSharedPreferences () che restituisce un'istanza SharedPreference che punta al file che contiene i valori delle preferenze.

SharedPreferences sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);

Il primo parametro è la chiave e il secondo parametro è la MODALITÀ. Oltre al privato, sono disponibili altre modalità elencate di seguito:

Suor n Modalità e descrizione
1

MODE_APPEND

Ciò aggiungerà le nuove preferenze con le preferenze già esistenti

2

MODE_ENABLE_WRITE_AHEAD_LOGGING

Flag di apertura del database. Quando è impostato, abiliterà la registrazione in anticipo di scrittura per impostazione predefinita

3

MODE_MULTI_PROCESS

Questo metodo verificherà la modifica delle preferenze anche se l'istanza sharedpreference è già stata caricata

4

MODE_PRIVATE

Impostando questa modalità, è possibile accedere al file solo utilizzando l'applicazione chiamante

5

MODE_WORLD_READABLE

Questa modalità consente ad altre applicazioni di leggere le preferenze

6

MODE_WORLD_WRITEABLE

Questa modalità consente ad altre applicazioni di scrivere le preferenze

Puoi salvare qualcosa nelle sharedpreferences usando la classe SharedPreferences.Editor. Chiamerai il metodo di modifica dell'istanza di SharedPreference e lo riceverai in un oggetto dell'editor. La sua sintassi è:

Editor editor = sharedpreferences.edit();
editor.putString("key", "value");
editor.commit();

Oltre al metodo putString, nella classe dell'editor sono disponibili metodi che consentono la manipolazione dei dati all'interno delle preferenze condivise. Sono elencati come segue:

Sr. NO Modalità e descrizione
1

apply()

È un metodo astratto. Eseguirà il commit delle modifiche dall'editor all'oggetto sharedPreference che stai chiamando

2

clear()

Rimuoverà tutti i valori dall'editor

3

remove(String key)

Rimuoverà il valore la cui chiave è stata passata come parametro

4

putLong(String key, long value)

Salverà un valore lungo in un editor delle preferenze

5

putInt(String key, int value)

Salverà un valore intero in un editor delle preferenze

6

putFloat(String key, float value)

Salverà un valore float in un editor di preferenze

Esempio

Questo esempio dimostra l'uso delle preferenze condivise. Visualizza una schermata con alcuni campi di testo, il cui valore viene salvato alla chiusura dell'applicazione e riportato alla sua apertura.

Per sperimentare questo esempio, è necessario eseguirlo su un dispositivo effettivo dopo aver sviluppato l'applicazione in base ai passaggi seguenti:

Passi Descrizione
1 Utilizzerai Android Studio per creare un'applicazione Android con un pacchetto com.example.sairamkrishna.myapplication.
2 Modificare il file src / MainActivity.java per aggiungere il codice di avanzamento per visualizzare la finestra di dialogo di avanzamento della rotazione.
3 Modifica il file res / layout / activity_main.xml per aggiungere il rispettivo codice XML.
4 Esegui l'applicazione e scegli un dispositivo Android in esecuzione, installa l'applicazione su di esso e verifica i risultati.

Di seguito è riportato il contenuto del file modificato MainActivity.java.

package com.example.sairamkrishna.myapplication;

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

public class MainActivity extends AppCompatActivity {
   EditText ed1,ed2,ed3;
   Button b1;
	
   public static final String MyPREFERENCES = "MyPrefs" ;
   public static final String Name = "nameKey";
   public static final String Phone = "phoneKey";
   public static final String Email = "emailKey";
	
   SharedPreferences sharedpreferences;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      ed1=(EditText)findViewById(R.id.editText);
      ed2=(EditText)findViewById(R.id.editText2);
      ed3=(EditText)findViewById(R.id.editText3);

      b1=(Button)findViewById(R.id.button);
      sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);

      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            String n  = ed1.getText().toString();
            String ph  = ed2.getText().toString();
            String e  = ed3.getText().toString();

            SharedPreferences.Editor editor = sharedpreferences.edit();

            editor.putString(Name, n);
            editor.putString(Phone, ph);
            editor.putString(Email, e);
            editor.commit();
            Toast.makeText(MainActivity.this,"Thanks",Toast.LENGTH_LONG).show();
         }
      });
   }

}

Di seguito è riportato il contenuto del file di attività principale modificatores/layout/activiy_main.xml.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
   android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
   
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Shared Preference "
      android:id="@+id/textView"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:textSize="35dp" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials Point"
      android:id="@+id/textView2"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true"
      android:textSize="35dp"
      android:textColor="#ff16ff01" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText"
      android:layout_below="@+id/textView2"
      android:layout_marginTop="67dp"
      android:hint="Name"
      android:layout_alignParentRight="true"
      android:layout_alignParentEnd="true"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText2"
      android:layout_below="@+id/editText"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true"
      android:layout_alignParentRight="true"
      android:layout_alignParentEnd="true"
      android:hint="Pass" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText3"
      android:layout_below="@+id/editText2"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true"
      android:layout_alignParentRight="true"
      android:layout_alignParentEnd="true"
      android:hint="Email" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Save"
      android:id="@+id/button"
      android:layout_below="@+id/editText3"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="50dp" />
      
</RelativeLayout>

Di seguito è riportato il contenuto del contenuto modificato del file res/values/strings.xml.

<resources>
   <string name="app_name">My Application</string>
</resources>

Di seguito è riportato il file predefinito del contenuto AndroidManifest.xml.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >
   
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name=".MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
   </application>
</manifest>

Proviamo a eseguire la tua applicazione. Presumo che tu abbia collegato il tuo attuale dispositivo mobile Android al tuo computer. Per eseguire l'app da Android Studio, apri uno dei file di attività del tuo progetto e fai clic sull'icona Esegui dalla barra degli strumenti. Prima di avviare l'applicazione, Android Studio visualizzerà la seguente finestra per selezionare un'opzione in cui si desidera eseguire l'applicazione Android.

Seleziona il tuo dispositivo mobile come opzione, quindi controlla il tuo dispositivo mobile che visualizzerà la seguente schermata:

Ora inserisci del testo nel campo. Ad esempio, ho inserito un nome casuale e altre informazioni e ho fatto clic sul pulsante Salva.

Ora quando premi il pulsante Salva, il testo verrà salvato nelle preferenze condivise. Ora premi il pulsante Indietro e esci dall'applicazione. Ora aprilo di nuovo e vedrai tutto il testo che hai scritto nella tua applicazione.