Android - SharedPreferences [เหมือน Session ในภาษา PHP]

ทำไมต้องใช้ SharedPreferences ?
  • เช็คว่าใช้ แอพพลิเคชั่นครั้งแรกหรือไม่?
  • เช็คว่าแอพอัพเดทล่าสุดหรือยัง
  • เก็บค่า Location ตำแหน่งของยูเซอร์
  • เช็คการล็อกอินเข้าสู่ระบบ
  • เก็บค่า Settings ของโปรแกรม เช่นเลือกภาษา , ฟร้อน , หรือตั้งค่าอื่นๆ
  • เก็บค่าตัวแปรที่เรียกใช้ร่วมกันได้ในทุก Activity 

การเรียกใช้งาน SharedPreference

SharedPreferences spf = getSharedPreferences("filename", mode);

filename :  ชื่อไฟล์ xml ที่ใช้เก็บข้อมูล
mode      : ประกอบด้วย 6 mode ที่สามารถศึกษาได้จาก ลิงค์นี้
                  โดยปกติเราจะใช้เป็น MODE_PRIVATE

[Note] - การใช้งาน SharedPreference จะสร้าง XML files เก็บในมือถือของคุณที่อยู่ใน /data/data/
เช่น   /data/data/com.iak1.basicencryption/shared_prefs




การ Put ข้อมูลเก็บใน SharedPreferences
SharedPreferences spf = getSharedPreferences("user_login", MODE_PRIVATE);
SharedPreferences.Editor spf_edit = spf.edit();
spf_edit.putString("username", "iak1");
spf_edit.putString("password", "mypassword");

spf_edit.commit();

ผลลัพธ์ : จะได้ไฟล์ SharedPreferences ชื่อ user_login
มี key : username เก็บ String : iak1
มี key : password เก็บ String : mypassword





ถ้าต้องการดึงข้อมูลออกมาใช้งาน

SharedPreferences spf = this.getSharedPreferences("user_login", MODE_PRIVATE);
String username = spf.getString("username", null);
String password = spf.getString("password", null);

การดึงข้อมูลประเภทอื่นๆ
pref.getString("key_name", null);
pref.getInt("key_name", null);
pref.getFloat("key_name", null);
pref.getLong("key_name", null);
pref.getBoolean("key_name", null);




การลบ Value ใน KEY ภายใน SharedPreferences

SharedPreferences spf = getSharedPreferences("filename", MODE_PRIVATE);
SharedPreferences.Editor spf_edit = spf.edit();
spf_edit.remove("key");
spf_edit.commit();

*ลบทั้งหมดใช้ spf_edit.clear();




super user บน rooted device จะสามารถเข้าถึงข้อมูลของ SharedPreferences
เพราะฉนั้นควรพิจารณาเมื่อนำไปใช้เก็บข้อมูลสำคัญๆ เช่น Password ของผู้ใช้ เป็นต้น
วิธีทางป้องกัน คือควรทำ pref encryption , ใช้งาน Secure Preference