Android根据不同身份配置APP对应的不同模块方法
作者:gracefullum 发布时间:2023-09-25 05:22:36
项目需求为APP的使用单位有很多部门,各个部分的业务也是独立的,所以开发的APP中如果把所有的模块都显示出来然后再做权限分配,会显得屏幕全是各个模块,而使用的人员只使用其中一到两个,这样给使用者带来了不便,那么如何能根据不同业务部门不同身份的人登录APP后,显示对应身份所能看到的模块就变成本次要解决的问题了。
解决思路:APP的主页用gridview来动态加载模块,然后通过list给gridview进行适配,最后在屏幕上显示出来;
但是问题来了,如何保证点击对应模块就进入相对应的模块内,例如张三的权限是个人中心和数据查看两个模块,而李四的权限是数据统计,那么张三登录进去时屏幕第一个显示个人中心,第二个显示数据查看,点击个人中心进入对应的个人中心,点击数据查看进入对应的数据查看;而李四登录进入是屏幕只显示数据统计,如何做到点击数据统计进入对应的数据统计而不是进入个人中心。
因此,屏幕上模块的点击事件也应该根据身份权限进行加载,不同身份动态加载所对用模块的点击事件。
if(sharedPreferences.getBoolean("OnlineBooking", false)){
list_imgs.add(i, R.drawable.index_book);
list_text.add(i,"报表查看");
value.put(i, *Activity.class);
i++;
}
if(sharedPreferences.getBoolean("MobileSales", false)){
list_imgs.add(i, R.drawable.index_yidongxiaoshou);
list_text.add(i,"数据统计");
value.put(i, *Activity.class);
i++;
}
if(sharedPreferences.getBoolean("Workbench", false)){
list_imgs.add(i, R.drawable.index_workbench);
list_text.add(i,"个人中心");
value.put(i, *Activity.class);
i++;
}
用户登录后,将服务返回的权限值保存到sharedPreferences中,权限值为true屏幕进行设配,值为false则不显示,上面代码中将sharedPreferences中的值取出判断是否为true,如果为true则将模块的图片加载到list_imgs,模块中的图标下的文字加载到list_test中,最后将对应模块的Activity加载到SparseArray中。
gridview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Intent intentcontent=null;
if(isLogin){
intentcontent=new Intent(MainActivity.this,value.get(position));
startActivity(intentcontent);
}else{
Util.showToast(MainActivity.this, getResources().getString(R.string.nologin));
}
}
});
gridview的点击事件按照SparseArray中取值value.get(position)对应的Activity来进行对应的模块加载。
身份1对应的用户登录进来显示的模块数
身份2对应的用户登录进来显示的模块数,成功的实现了不同的身份加载不同模块,并且点击屏幕模块进入对应的模块的Activty
来源:https://blog.csdn.net/qq_27478765/article/details/72763529
猜你喜欢
- 前言单元测试是编写测试代码,用来检测特定的、明确的、细颗粒的功能。单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的。单元测试不
- 一、开发环境:1、windows 7 企业版2、IDEA 143、JDK 1.84、Maven 3.5.25、MariaDB6、SQLYog
- 闭锁相当于一扇门,在闭锁到达结束状态之前,这扇门一直是关闭着的,没有任何线程可以通过,当到达结束状态时,这扇门才会打开并容许所有线程通过。它
- 调用示例: 执行效果: 2.实现代码:/// <summary> 2 &
- Spring AOP proxyTargetClass的行为要点列表形式proxyTargetClasstrue目标对象实现了接口 – 使用
- PDF中的加数字签名是对文档权威性的有效证明。我们在向PDF文档添加签名时,需要准备可信任的签名证书。同时,对已有的签名,可验证签名是否有效
- 使用 transient 修饰private transient String noColumn;使用 static 修饰private s
- 前言:反射(Reflection)是.NET提供给开发者的一个强大工具,尽管作为.NET框架的使用者,很多时候不会用到反射。但在一些情况下,
- 在开始本文前先考虑以下一个问题在不使用任何带有自动补全功能IDE的情况下,如何获取一个数组的长度?以及,如何获取一个字符串的长度?这个问题我
- 前言Stream是一个来自数据源的元素队列并支持聚合操作,其中具有以下特性:Stream只负责计算,不存储任何元素,元素是特定类型的对象,形
- Authentication使用SpringSecurity可以在任何地方注入Authentication进而获取到当前登录的用户信息,可谓
- 1 概述Java虚拟机把描述类的数据从Class文件加载到内存, 并对数据进行校验、转化解析和初始化,最终形成可以被虚拟机直接使用的Java
- 最近几年玩得最疯狂的应该是发红包了,尤其是过年的时候特别受欢迎,下面写了红包的随机算法,其实挺简单的,仅是提供一种思路,希望可以给大家一些启
- 本文实例讲述了Android编程中Tween动画和Frame动画实现方法。分享给大家供大家参考,具体如下:Animation主要有两种动画模
- mport java.text.DecimalFormat; DecimalFormat &nb
- **前言:**我们项目中可能有这种需求,每个人请求了哪些接口?做了什么事情?参数是什么?重要的接口我们需要记录操作日志以便查找。操作日志和系
- 有时间我们在使用多线程的时候,需要取消线程的执行,可以使用CancellationTokenSource来取消对Task开辟多线程的取消如下
- 有时候我们做Android开发,需要弹一个用户提示,但是有时候设计的提示弹窗是带有图片的,我们每次写一个特别麻烦。所以我特地封装了一个工具类
- 本文介绍了Spring Boot + MyBatis读写分离,有需要了解Spring+MyBatis读写分离的朋友可参考。希望此文章对各位有
- 原理:创建一个新的Bitmap,然后再根据它来创建一个Canvas,最后调用View的draw方法将View画到Canvas上,这样得到的B