Как перенаправить пользователя на основе роли пользователя на различные действия в Android - PullRequest
0 голосов

Я новичок в разработке Android. Я хотел бы создать приложение с минимум двумя пользовательскими ролями. Я хочу, чтобы пользователи были перенаправлены на различные действия после входа в систему. Я читал, что это можно сделать с помощью 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

Я немного запутался с этим ответом. Я понимаю код, но не знаю, как это можно использовать для перенаправления пользователей на различные действия. Буду очень признателен за любую помощь и объяснения, как это сделать!

1 Ответ

0 голосов
/ 06 мая 2019

Чтобы установить Shared Preference, используйте следующий код:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("ID_NAME_EXAMPLE","STRING_TO_SAVE");
editor.apply();

Для доступа к Shared Preference используйте:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String name = preferences.getString("ID_NAME_EXAMPLE", "DEFAULT_VALUE_IF_NONE");

Так, например, вы можете сохранить Shared Preferenceas 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...