Android : Les données locales - Les préférences

1 1 1 1 1 1 1 1 1 1 Rating 0.00 (0 Votes)
Submit to DeliciousSubmit to DiggSubmit to FacebookSubmit to Google PlusSubmit to StumbleuponSubmit to TechnoratiSubmit to TwitterSubmit to LinkedIn

37-android-les-donnees-locales-les-preferences

Android fournit différentes fonctionnalités permettant au développeur de travailler avec des données locales, nous allons étudier dans ce tutoriel les préférences privées d'une activité.

Dans notre exemple, nous souhaitons récupérer la date de mise à jour dans un fichier distant. Une fois avoir récupéré la date, nous la stockons comme donnée locale. Pour cela, nous avons recours à l’utilisation des préférences d’une activité.

 

Captures d'écran

android-preferences-1 android-preferences-2

Explications

Pour mémoriser les données dans les préférences 

SharedPreferences localPreferences = getPreferences(Context.MODE_PRIVATE);
Editor localEditor = localPreferences.edit();
localEditor.putBoolean(“key1”, true);
localEditor.putString(“key2”, "ceci est un texte");
localEditor.putFloat(“key3”, 6);
localEditor.commit();

Pour restaurer les données des préférences 

SharedPreferences localPreferences = getPreferences(Context.MODE_PRIVATE);
bool key1 = localPreferences.getBoolean(“key1”, false);
String key2 = localPreferences.getString(“key2”, “”);
float key3 = localPreferences.getFloat(“key3”, 0.0f);

Code source

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
public class PreferencesActivity extends Activity implements Runnable {
    public static final String LOG_TAG = "PREFERENCES";
    public static final String URL_DATE_UPDATE = "URL_DE_VOTRE_FICHIER";
    private String mDateUpdate;
    private String mPreferenceDateUpdate;
    private ProgressDialog mprogressDialog;
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        mprogressDialog = new ProgressDialog(this);
        // Message de la barre de progression
        mprogressDialog.setMessage("Chargement en cours...");
        // Titre de la barre de progression
        mprogressDialog.setTitle("Préférences");
        // Style de la barre de progression(STYLE_HORIZONTAL ou STYLE_SPINNER)
        mprogressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        // Affichage de la barre de progression
        mprogressDialog.show();
        
        Thread thread = new Thread(this);
        thread.start(); 
    }
    
    public void run() {
        // 1 - Récupérer la date de mise à jour dans le fichier distant
        mDateUpdate = getHttpGet(URL_DATE_UPDATE);
        // Envoi du message(1) qui permet la mise à jour du message de la progressDialog
        handler.sendEmptyMessage(1);
        try {
            // Attendre 5 secondes
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        // 2 - Mémoriser la date de mise à jour dans les préférences
        SharedPreferences localPreferences = getPreferences(Context.MODE_PRIVATE);
        Editor localEditor = localPreferences.edit();
        localEditor.putString("dateUpdate", mDateUpdate);
        localEditor.commit();
        // Envoi du message(2) qui permet la mise à jour du message de la progressDialog
        handler.sendEmptyMessage(2); 
        try {
            // Attendre 5 secondes
            Thread.sleep(5000);
        } 
        catch (InterruptedException e) {
            e.printStackTrace();
        }
        // 3 - Restaurer la date de mise à jour
        mPreferenceDateUpdate = localPreferences.getString("dateUpdate", "");
        try {
            // Attendre 5 secondes
            Thread.sleep(5000);
        } 
        catch (InterruptedException e) {
            e.printStackTrace();
        }    
        // Envoi du message(3) qui permet la mise à jour du message de la progressDialog
        handler.sendEmptyMessage(3);
        try {
            // Attendre 5 secondes
            Thread.sleep(5000);
        } 
        catch (InterruptedException e) {
            e.printStackTrace();
        }
        // 4 - Arrêter la progressDialog
        // Envoi du message(4) qui permet l'arrêt de la progressDialog
        handler.sendEmptyMessage(4);
    }
    
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            int i = msg.what;
            switch (i) 
            { 
                case 1: 
                    mprogressDialog.setMessage(mDateUpdate); 
                    break; 
                case 2:
                    mprogressDialog.setMessage("Mémoriser dans les préférences : " + mDateUpdate);
                    break;
                case 3:
                    mprogressDialog.setMessage("Restauration des préférences : " + mPreferenceDateUpdate);
                case 4: 
                    mprogressDialog.dismiss(); 
                    break;                     
            }
        }
    };
    
    /**
     * Méthode qui retourne les données désignées par l'url.
     * @param url Adresse internet.
     * @return Contenu des données sous la forme d’une chaîne de caractères.
     */
    public String getHttpGet(String url) {
        StringBuffer stringBuffer = new StringBuffer("");
        BufferedReader bufferedReader = null;
        try {
            HttpClient httpClient = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet();
            URI uri = new URI(url);
            httpGet.setURI(uri);
            HttpResponse httpResponse = httpClient.execute(httpGet);
            InputStream inputStream = httpResponse.getEntity().getContent();
            bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            String readLine = bufferedReader.readLine();
            while (readLine != null) {
                stringBuffer.append(readLine);
                stringBuffer.append("\n");
                readLine = bufferedReader.readLine();
            }
        } 
        catch (Exception e) {
            Log.e(LOG_TAG, e.getMessage());
        } 
        finally {
            if (bufferedReader != null) {
                try {
                    bufferedReader.close();
                } catch (IOException e) {
                    Log.e(LOG_TAG, e.getMessage());
                }
            }
        }
        return stringBuffer.toString();
    }
}

Télécharger le code source du projet

128x128 download Code source du projet 
Android : Les données locales - Les préférences

Pour en savoir plus

Submit to DeliciousSubmit to DiggSubmit to FacebookSubmit to Google PlusSubmit to StumbleuponSubmit to TechnoratiSubmit to TwitterSubmit to LinkedIn