我是android开发的新手。我想创建一个至少具有2个用户角色的应用。我希望用户在登录后被重定向到其他活动。我读到可以使用firebase来做到这一点,但是我不想在我的应用程序中使用它,因为到目前为止我已经开始构建应用程序并使用了改造和共享首选项。我还发现了另一个问题,她在问同样的问题,有人回答说,使用sessionManager类可以做到这一点。
他们的答案是:
“好,我想提供自己的答案。我实际上使用过Shared Preferences
。它非常简单,可以全局使用我们输入的值。下面是代码:
1。创建一个单独的类并根据需要命名(我在这里更喜欢SessionManager)
public class SessionManager {
// Shared Preferences
SharedPreferences sharedPrefer;
// Editor for Shared preferences
SharedPreferences.Editor editor;
// Context
Context context;
// Shared Pref mode
int PRIVATE_MODE = 0;
// Shared Pref file name
private static final String PREF_NAME = "MySession";
// SHARED PREF KEYS FOR ALL DATA
// User's UserId
public static final String KEY_USERID = "userId";
// User's categoryId
public static final String KEY_CATID = "catId";
// User's categoryType[Teacher, Student, etc.,]
public static final String KEY_CATTYPE = "categoryType";
// User's batchId[like class or level or batch]
public static final String KEY_BATCHID = "batchId";
// Constructor
public SessionManager(Context context) {
this.context = context;
sharedPrefer = context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
editor = sharedPrefer.edit();
}
/**
* Call this method on/after login to store the details in session
* */
public void createLoginSession(String userId, String catId, String catTyp, String batchId) {
// Storing userId in pref
editor.putString(KEY_USERID, userId);
// Storing catId in pref
editor.putString(KEY_CATID, catId);
// Storing catType in pref
editor.putString(KEY_CATTYPE, catTyp);
// Storing catType in pref
editor.putString(KEY_BATCHID, batchId);
// commit changes
editor.commit();
}
/**
* Call this method anywhere in the project to Get the stored session data
* */
public HashMap<String, String> getUserDetails() {
HashMap<String, String> user = new HashMap<String, String>();
user.put("userId",sharedPrefer.getString(KEY_USERID, null));
user.put("batchId",sharedPrefer.getString(KEY_BATCHID, null));
user.put("catId", sharedPrefer.getString(KEY_CATID, null));
user.put("catType", sharedPrefer.getString(KEY_CATTYPE, null));
return user;
}
}
2。在项目中的其他一些类上调用上述方法:
在会话中存储数据
SessionManager session = new SessionManager(getApplicationContext());
session.createLoginSession(userId, categoryId, categoryType, batchId);
从会话中检索数据
SessionManager session = new SessionManager(getApplicationContext());
HashMap<String, String> user = session.getUserDetails();
String userId = user.get("userId").toString();
String categoryId = user.get("catId").toString();
String categoryType = user.get("catType").toString();
String batchId= user.get("batchId").toString();
”-@sam
我对这个答案有点困惑。我理解代码,但是对于如何将其重定向到其他活动我一无所知。对此的任何帮助和解释将不胜感激!
答案 0 :(得分:0)
要设置共享首选项,请使用以下代码:
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("ID_NAME_EXAMPLE","STRING_TO_SAVE");
editor.apply();
要访问共享首选项,请使用以下方法:
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String name = preferences.getString("ID_NAME_EXAMPLE", "DEFAULT_VALUE_IF_NONE");
例如,您可以将Shared Preference
另存为WHICH_ACTIVITY
editor.putString("WHICH_ACTIVITY","one");
editor.apply();
然后在用户以
身份登录时访问它String name = preferences.getString("WHICH_ACTIVITY", "zero");
if(name.equals("zero")){
startActivity(0);
}
else if(name.equals("one")){
startActivity(1);
}