我的LoginActivity正在向URL发送用户名和密码并获得成功状态。我想在会话中存储json响应,如userid,名称,电子邮件信息,并在MainActivity中检索它。我正在使用以下代码进行json响应。
JSONObject jObj = new JSONObject(response);
String userId = jObj.getString("user_id");
我的回答是
{"tag":"login",
"error":false,
"user_id":"5",
"user":{"name":"Chandra shankar",
"email":"chandra@gmail.com"
}
}
下面的是Session.java中的SharedPreferences
public class Session {
private SharedPreferences sp;
private SharedPreferences.Editor spEditor;
public Session(Context context) {
sp = PreferenceManager.getDefaultSharedPreferences(context);
}
public boolean setLogin(boolean status) {
spEditor = sp.edit();
spEditor.putBoolean("is_logged_in", status);
spEditor.commit();
return true;
}
public boolean getLoggedIn() {
return sp.getBoolean("is_logged_in", false);
}
}
答案 0 :(得分:1)
SharedPreferences preferences = this.getSharedPreferences("APP_NAME", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("ID", userId).apply();
如果你想重新获得价值。
String id = preferences.getString("ID");
EDIT
public class Session {
private SharedPreferences sp;
private SharedPreferences.Editor spEditor;
private String ISLOGIN = "is_logged_in";
private String USER_ID = "user_id";
public Session(Context context) {
sp = PreferenceManager.getDefaultSharedPreferences(context);
}
public boolean setLogin(boolean status) {
spEditor = sp.edit();
spEditor.putBoolean(ISLOGIN, status);
//use apply for async process
spEditor.apply();
return status;
}
public boolean getLoggedIn() {
return sp.getBoolean(ISLOGIN, false);
}
public void setUserId(String userid){
sp.edit().putString(USER_ID,userid).apply();
}
//get user id
public String getUserId(){
return sp.getString(USER_ID);
}
}
//活动
Session session = new Session(this);
String id = session.getUserId();
p / s:我建议你使用这个TinyDB SharedPreferences
答案 1 :(得分:0)
所以,实际上你需要两个步骤。您需要解析响应,然后需要保存它。
要解析json响应,可以构建一个POJO类。 GSON对此有所帮助。您也可以按this链接解析回复。
然后,您可以将数据保存到Shared Preference / Sqlite / Local Variables / Files或任何其他位置,并根据您的需要使用保存的值。