Android软件权限系统的设计论述

日期:2022-10-24 来源:看看米 点击: 评论

Android软件权限系统的设计论述

  服务器端可能是JavaEE、DOTNET等Web服务器,或者是提供Webservice接口的数据,并且组织成各种形式。Android提供的HttpClient可以向Web服务器发送请求并且处理响应,可以抓取到服务器获得的权限数据,此外Android也提供了Webservice和Socket支持,所以Android从不同形式的服务器都可以获得数据,这为系统实现提供了重要的数据基础,本文着重讨论从Web服务器获得数据的方式。
  
  数据共享
  
  Android提供了Application类,在一个应用中这个类的实例被共享,可以将权限数据放在其中,系统所有组件通过Application获得共享的权限数据。Application类通常要通过继承的方式使用。
  

  Android的可配置性组件
  
  Android的展示层组件是Activity,这是一个容器组件,其他的组件可以通过配置文件或者硬编码的方式添加到Activity[6]中,然后显示在移动设备界面,其中通过XML配置文件具有灵活配置、维护方便的特点。所有可视化组件都继承了View组件,View组件具有setDescription(String)方法,配置文件是android:description属性,可以将权限数据配置其中,通过这个属性中配置的数据和服务器端抓取的权限数据进行比对,决定组件的可视化。
  
  Android组件的可见性属性
  
  View组件可以通过setVisibility(int)方法设置组件的可视化,其参数有三个值,View.VISIBLE设置组件可以显示,View.INVISIBLE设置组件不显示但是占用布局空间,View.GONE设置组件不显示也不占用布局空间。
  
  Activity组件的遍历
  
  Activity组件根据getLayoutInflater()方法获得LayoutInflater类型的引用[7],根据这个引用的inflate(int,ViewGroup)方法获得组件的布局,其中第一个参数是布局文件的ID,第二参数是组件组,根据获得布局可以遍历Activity中所有的组件。
  
  架构设计及代码实现
  
  权限实体类
  
  权限实体类包含了权限的相关信息,其中最重要的就是权限数据。以下是权限实体类的代码片段:系统中所有的权限通过Map进行组织,键是权限字符串,值是权限对象,这可以方便通过权限字符串检索权限。
  
  通过HTTP获取服务器权限点
  
  这里采用HTTP方式获取服务器数据,它和传统服务器编程中的请求和响应处理是相同的,Android实现了Apache的HttpClient接口,从而实现了HTTP操作。为了便于数据的操作和传送,服务器和Android客户端的数据可以通过JSON格式组织。以下是代码片段:
  
  数据共享实现
  
  构建一个BasicApplication类继承Application,这个类的对象可以在应用程序中被每个组件共享访问,所以需要将其构建成单例模式,并给予共享数据的读写方法,以下是这个类的代码:
  
  权限控制类
  
  权限控制类控制Activity中组件的可视化,在类中构建一个静态方法publicstaticvoidpermissionControl(Activityact,intresId,Map<String,Permission);这个方法的三个参数分别是activity组件的引用,activity组件中布局资源的id和权限数据。方法的功能是遍历布局资源中所有的组件,然后根据其中description属性配置的权限和获得的权限数据比对,如果比对成功则或者组件没有配置权限,则设置组件可视,否则隐藏组件,代码如下:
  
  Activity基类
  
  所有的Activity都要进行权限控制,所以抽取出一个Activity的基类完成权限,Activity组件继承这个基类也就完成了权限控制,然后再完成自己独立的业务,基类具体代码如下:
  
  结束语
  
  Android开发现在已经广泛的使用,Android自身是对Java进一步作了适应于移动开发的封装,基于移动应用的开发会越来越普遍,本文重点论述Android端权限系统的架构和实现,其主要目的是在构建可用的权限系统上让代码更加优雅,让系统的使用和可维护性更加方便。

分享到:
更多图片欣赏
更多WWE经典赛事
更多WWE最新赛事
更多女摔图片
热门新闻
日期:2022-10-24 00:00
更多WWE高清壁纸
更多WWE比赛图片
WWE节目列表
WWE PPV大赛
WWE RAW赛事
WWE SmackDown赛事
WWE Main Event赛事
WWE Superstars赛事
WWE Total Divas 赛事
WWE NXT赛事
WWE TNA赛事
WWE UFC赛事
WWE2017最新赛事
PVP大赛(每月)
WWE2017皇家大战
WWE2017快车道
WWE2017摔跤狂热大赛
WWE2017极限规则
WWE2017血债血偿
WWE2017合约阶梯大赛
WWE2017夏日狂潮
WWE2017冠军之夜
WWE2017战争之王
WWE2017地狱牢笼大赛
WWE2017强者生存大赛
WWE2017桌子梯子椅子
图片壁纸
娱乐图片
比赛图片
高清壁纸
摔角周边
新闻资讯
WWE新闻
TNA新闻
UFC新闻
其他新闻
选手资料
RAW选手
SD选手
WWE名人堂
其他选手
其他
粉丝交流群
意见反馈
足球
NBA
口号大全
比赛口号大全
运动会口号大全
出场音乐
最新音乐
出场音乐
WWE主题曲
周边音乐
狂野角斗士
中文解说
国语
配音
WWE招式
WWE女摔
经典
wwe美国职业摔角2017
温馨提示:本站属于摔角娱乐类节目,摔角手经过专业训练,请勿模仿!sj.kankanmi.com
Copyright © 2017 WWE之家

看摔角网_wwe美国职业摔角,WWE狂野角斗士wwe最新赛事冠军之夜,wwe中文网,播出时间:周一RAW,周五SD,周四NXT/SS,周五TNA。看摔角网地址:sj.kankanmi.com