我最近一直在开发一个android应用,其中新用户必须输入特定的密钥才能登录。在他插入该密钥时,该密钥已保存在手机的“共享首选项”中,因此他无需再次登录。
我的问题是我想检查用户是否是新用户,换句话说,检查“共享首选项”中是否有一个名为“ Key”的值,以便该应用程序直接将其引导至主菜单。
我希望我能清楚地解释这个问题。
答案 0 :(得分:1)
您可以通过两种方式执行此操作 第一种方式
SharedPreferences pref =getSharedPreferences("yourPrefName",MODE_PRIVATE);
if(pref.contains("YourKey"){
// key is exist
}else{
// key not exist
}
第二种方式
如果您具有任何唯一信息,例如每个用户的ID 和ID,则不可能是 -1
因此您可以执行此操作以检查用户是否已登录
SharedPreferences pref =getSharedPreferences("yourPrefName",MODE_PRIVATE);
// getInt(key,defualtValue) method accept two value
// key : name key in sharefPrefrance
// defualtValue: if the key does not exist the method will return this defualtValue
int id= pref.getInt("id",-1);
if(id!=-1)
// user is login and have id
答案 1 :(得分:1)
SharedPreferences具有
包含(字符串键)
方法。用它来检查是否存在使用您给定密钥的条目。
SharedPreferences prefs = context.getSharedPreferences("SharedPref_Name", Context.MODE_PRIVATE);
if(pref.contains("Key"){
String deviceToken = prefs.getString("Key", null);
}else{
// New User
}
或使用
getAll()
android.content.SharedPreferences的方法。
Map<String, ?> map = context.getSharedPreferences("SharedPref_Name", Context.MODE_PRIVATE).getAll();
for (Map.Entry<String, ?> entry: prefsMap.entrySet()) {
// entry.getValue().toString() will give the key. check it against the key that you want.
}
在 科特林
中val prefs = context?.getSharedPreferences("SharedPref_Name", Context.MODE_PRIVATE)
if(prefs?.contains("Key")!!){
val deviceToken = prefs.getString("Key", null);
}
或
(context?.getSharedPreferences("",Context.MODE_PRIVATE))?.all?.forEach {
//access key using it.key & value using it.value
Log.d("Preferences values",it.key() + ": " + it.value()
}