【问题标题】:How to redirect user based on the user's role to different activities in android如何根据用户的角色将用户重定向到android中的不同活动
【发布时间】:2019-09-24 10:27:35
【问题描述】:

我是安卓开发新手。我想创建一个至少有 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

我对这个答案有点困惑。我理解代码,但我不知道如何使用它来将用户重定向到不同的活动。任何有关如何执行此操作的帮助和解释将不胜感激!

【问题讨论】:

    标签: android authentication android-activity sharedpreferences user-roles


    【解决方案1】:

    要设置共享首选项,请使用以下代码:

    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);
    }
    

    【讨论】:

      猜你喜欢
      • 2015-02-15
      • 1970-01-01
      • 2015-09-09
      • 2015-10-07
      • 2020-07-05
      • 2017-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多