好的,因為我們有時候除了用Firebase之外,我們可能會用其它服務!而Firebase它的Auth除非有logout,否則它會保有登入的紀錄~ 那如果我們有些服務是會需要記住local的資料呢?我們就可以用SharedPreferences來紀錄資料!! 這次是額外的內容喔 小歇一下!!
依照 Key-Value的方式儲存資料
class SharedPreference(content: Context) {
private val sharedPreference = content.getSharedPreferences("帳密",0)
fun saveEmail(email: String){
sharedPreference.edit().putString("信箱",email).apply()
}
fun savePassword(pass: String){
sharedPreference.edit().putString("密碼",pass).apply()
}
fun getEmail(): String?{
return sharedPreference.getString("信箱","")
}
fun getPass(): String?{
return sharedPreference.getString("密碼","")
}
}
首先可以注意到,實例化 sharedPreference的方法
private val sharedPreference = content.getSharedPreferences("帳密",0)
其中的第一個參數是檔案名稱,若是已有該名稱的檔案後,就會在新增資料的時候在該檔案新增資料,若無則直接創建新的
第二個參數,是mode,原本有許多模式,但由於隱私問題,其他mode幾乎都被棄用(可讓別的App存取或寫入)。現在比較推薦是用 MODE_PRIVATE 這個模式,int值為 0,只限當前APP使用。
ps.若有需要共享資料,可以用 FileProvider
接下來看到寫入的方法,請使用 edit(),並在後面可以新增想要填入的值型態
(記住,都是Key-Value,所以這些裡面的引數前面都是Key)
接下來也可以注意到,最後面寫了 apply(),儲存值的方法有兩種
fun saveEmail(email: String){
sharedPreference.edit().putString("信箱",email).apply()
}
取出資料的方式為
fun getEmail(): String?{
return sharedPreference.getString("信箱","")
}
接下來就可以叫出來啦
存入
val sharedPreferences = SharedPreference(requireActivity())
sharedPreferences.saveEmail(viewModel.list[1])
sharedPreferences.savePassword(passWord)
叫出
val sharedPreference = SharedPreference(requireActivity())
val email = sharedPreference.getEmail()
val password = sharedPreference.getPass()
這樣就大功告成啦! 期待明天~