דוגמת הוראות העדפות משותפות של Android

במדריך זה, נשתמש ב־Shared Preferences ביישום ה־אנדרואיד שלנו כדי לאחסן מידע בצורת זוגות מפתח-ערך.

סקירת Android Shared Preferences

ה־Shared Preferences מאפשרות לפעילויות וליישומים לשמור העדפות בצורת זוגות מפתח-ערך, דומה ל־Map, הילדים יישמרו גם כאשר המשתמש סוגר את היישום. אנדרואיד אחסן העדפות ב־XML בתיקייה shared_prefs תחת התיקייה DATA/data/{חבילת היישום}. ניתן לקבל את התיקייה DATA על ידי קריאה ל־Environment.getDataDirectory().
SharedPreferences הוא ספציפי ליישום, כלומר, הנתונים אבדים בביצוע אחת מהאפשרויות הבאות:

  • בהסרת היישום
  • במחיקת נתוני היישום (דרך ההגדרות)

כפי שהשם מרמז, המטרה העיקרית היא לאחסן פרטי הגדרות שהמשתמש יכול להגדיר, כמו הגדרות משתמש ספציפיות ושמירה על המשתמש מחובר ליישום. כדי לקבל גישה להעדפות, יש לנו שלוש ממשקי API לבחירה:

  • getPreferences(): משמש מתוך הפעולה שלך, לגישה להעדפות הפעולה
  • getSharedPreferences(): משמש מתוך הפעולה שלך (או מקור יישום אחר), לגישה להעדפות היישום
  • getDefaultSharedPreferences(): משמש על PreferenceManager, לקבלת הגדרות משותפות שפועלות בשיתוף פעולה עם מסגרת ההעדפות הכללית של Android

במדריך זה נעקוב אחרי getSharedPreferences(). השיטה מוגדרת כך: getSharedPreferences (String PREFS_NAME, int mode) PREFS_NAME הוא שם הקובץ. mode הוא מצב הפעולה. המצבים האפשריים הם:

  • MODE_PRIVATE: המצב ברירת המחדל, שבו ניתן לגשת לקובץ שנוצר רק על ידי האפליקציה הקוראת
  • MODE_WORLD_READABLE: יצירת קבצים שניתן לקרוא בכל העולם הוא מסוכן מאוד ויכול לגרום לחורים באבטחה באפליקציות
  • MODE_WORLD_WRITEABLE: יצירת קבצים שניתן לכתוב בכל העולם הוא מסוכן מאוד ויכול לגרום לחורים באבטחה באפליקציות
  • MODE_MULTI_PROCESS: שיטה זו תבדוק שינויים בהעדפות גם אם מופע ההעדפות המשותף כבר נטען
  • MODE_APPEND: זה יוסיף את ההעדפות החדשות להעדפות הקיימות כבר
  • MODE_ENABLE_WRITE_AHEAD_LOGGING: דגל פתיחת מסד נתונים. כאשר הוא מופעל, זה יאפשר יומן כתיבה מראש כבררת המחדל

אתחול

אנו זקוקים לעורך כדי לערוך ולשמור על השינויים בהעדפות משותפות. ניתן להשתמש בקוד הבא כדי לקבל את ההעדפות המשותפות.

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); // 0 - for private mode
Editor editor = pref.edit();

אחסון נתונים

editor.commit() משמש כדי לשמור שינויים בהעדפות משותפות.

editor.putBoolean("key_name", true); // Storing boolean - true/false
editor.putString("key_name", "string value"); // Storing string
editor.putInt("key_name", "int value"); // Storing integer
editor.putFloat("key_name", "float value"); // Storing float
editor.putLong("key_name", "long value"); // Storing long
 
editor.commit(); // commit changes

שליפת נתונים

ניתן לשלוף נתונים מהעדפות שמורות על ידי קריאה ל-getString() כדי לקבל את הערך הבא:

pref.getString("key_name", null); // getting String
pref.getInt("key_name", -1); // getting Integer
pref.getFloat("key_name", null); // getting Float
pref.getLong("key_name", null); // getting Long
pref.getBoolean("key_name", null); // getting boolean

מחיקת נתונים

remove("key_name") משמש למחיקת הערך הספציפי. clear() משמש להסרת כל הנתונים

editor.remove("name"); // will delete key name
editor.remove("email"); // will delete key email
 
editor.commit(); // commit changes
editor.clear();
editor.commit(); // commit changes

מבנה הפרויקט

קוד פרויקט מקורות העדפות משותפות של אנדרואיד

ה-activity_main.xml מכיל שני תצוגות EditText שמאחסנות ומציגות שם ואימייל. שלושת הכפתורים מיישמים את ה-MainActivity התואמים שלהם onClicks.

<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    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" >

    <Button
        android:id="@+id/btnSave"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:onClick="Save"
        android:text="Save" />

    <Button
        android:id="@+id/btnRetr"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:onClick="Get"
        android:text="Retrieve" />

    <Button
        android:id="@+id/btnClear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/etEmail"
        android:layout_centerVertical="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:onClick="clear"
        android:text="Clear" />

    <EditText
        android:id="@+id/etEmail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Email"
        android:inputType="textEmailAddress"
        android:layout_below="@+id/etName"
        android:layout_marginTop="20dp"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

    <EditText
        android:id="@+id/etName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Name"
        android:inputType="text"
        android:layout_alignParentTop="true"
        android:layout_alignLeft="@+id/etEmail"
        android:layout_alignStart="@+id/etEmail" />

</RelativeLayout>

קובץ ה-MainActivity.java משמש לשמירה ולאחזור של הנתונים דרך מפתחות.

package com.journaldev.sharedpreferences;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {
    SharedPreferences sharedpreferences;
    TextView name;
    TextView email;
    public static final String mypreference = "mypref";
    public static final String Name = "nameKey";
    public static final String Email = "emailKey";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        name = (TextView) findViewById(R.id.etName);
        email = (TextView) findViewById(R.id.etEmail);
        sharedpreferences = getSharedPreferences(mypreference,
                Context.MODE_PRIVATE);
        if (sharedpreferences.contains(Name)) {
            name.setText(sharedpreferences.getString(Name, ""));
        }
        if (sharedpreferences.contains(Email)) {
            email.setText(sharedpreferences.getString(Email, ""));

        }

    }

    public void Save(View view) {
        String n = name.getText().toString();
        String e = email.getText().toString();
        SharedPreferences.Editor editor = sharedpreferences.edit();
        editor.putString(Name, n);
        editor.putString(Email, e);
        editor.commit();
    }

    public void clear(View view) {
        name = (TextView) findViewById(R.id.etName);
        email = (TextView) findViewById(R.id.etEmail);
        name.setText("");
        email.setText("");

    }

    public void Get(View view) {
        name = (TextView) findViewById(R.id.etName);
        email = (TextView) findViewById(R.id.etEmail);
        sharedpreferences = getSharedPreferences(mypreference,
                Context.MODE_PRIVATE);

        if (sharedpreferences.contains(Name)) {
            name.setText(sharedpreferences.getString(Name, ""));
        }
        if (sharedpreferences.contains(Email)) {
            email.setText(sharedpreferences.getString(Email, ""));

        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // להזנה של התפריט; זה מוסיף פריטים לסרגל הפעולה אם הוא קיים. 
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

}

mypreference הוא שם הקובץ שבו מאוחסנים זוגות מפתח-ערך של העדפות משותפות. התמונה למטה מציגה את הפלט הסופי של הפרויקט שלנו: זה מסיים את המדריך הזה. ניתן להוריד את הפרויקט מקורות העדפות משותפות של אנדרואיד מהקישור למטה.

הורדת דוגמת פרויקט מקורות העדפות משותפות של אנדרואיד

Source:
https://www.digitalocean.com/community/tutorials/android-shared-preferences-example-tutorial