android - 如何根据用户角色打开 Android Activity ?

标签 android android-activity server listviewitem role

我正在创建一个基于在线的 Android 应用程序,其中有一个 ListView ,它显示来自不同类型用户(例如“学生”)的通知 ', '老师'。当我单击 ListView 项时,它应该检查用户的角色,用户是注册为“教师”还是“学生”,它应该打开基于他们角色的 Activity 屏幕。我将使用 Intent 来打开不同的 Activity 。如何从服务器检查用户的角色?

最佳答案

好吧,我想提供我自己的答案。我实际上使用了 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。在项目中的一些其他类上调用上述方法:

在 session 中存储数据

SessionManager session = new SessionManager(getApplicationContext());
session.createLoginSession(userId, categoryId, categoryType, batchId);

从 session 中检索数据

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

关于android - 如何根据用户角色打开 Android Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31489614/

相关文章:

java - 如何让多个线程使用同一个socket读写?

java - 为 Android 编程时是否需要指定列表的初始大小?

java - 如何使用 Intent 在主要 Activity 布局之上打开 Activity ?

java - 从 MainActivity 切换或删除启动屏幕

android - Android UI 线程的工作方式与 Swing UI 线程类似吗?

linux - Apache DirectoryRoot 配置?

安卓错误 :react-native-google-signin:processReleaseResources

java - 在选定的 ListView 行中放置复选标记

java - If 语句显示 toast 或继续下一个 Activity

android - 如何将 Actor IN android 应用程序与本地服务器集成