上一节,我们讲到了怎么去查找安卓源码中AndroidManifest.xml文件,打开这个文件,你会发现里面有很多<permission ... />的标签,如下图所示:

这个是用来做什么的呢?

通常在我们安装app的时候,都会提示一些app对手机的一些访问权限说明,如下图:

接下来我们分析下下面这段的含义

<permission android:name="android.permission.READ_SMS"
android:permissionGroup="android.permission-group.MESSAGES"
android:protectionLevel="dangerous"
android:label="@string/permlab_readSms"
android:description="@string/permdesc_readSms" />

这是一个读取短信的权限,各个字段的具体含义如下:
android:name:权限的名字,在应用层中也是使用这个名称来声明
android:permissionGroup:权限的分类,在提示用户安装时会把某些功能差不多的权限放到一类。比如读取短信、读取彩信放在一块(注意:红米4.4.2版本没将该相同分组的放在一类)。
android:protectionLeve:分为Normal、Dangerous、Signature、SignatureOrSystem。有些权限需要用户同意,有些权限可以通过用户决定是否用不用,可以通过手机管理软件进行设置
android:label:提示给用户的权限名,就是在用户手机上显示的一些名称,通过label对应到String.xml中,里面就包含了具体的文字提示
android:description:提示给用户的权限描述。当你打开手机应用点击某个权限的时候,会弹出对话框,给你对这个权限的详细描述。

1.android:name
在我们开发app应用中,通常也要在AndroidManifest.xml文件中进行声明,如下:
<uses-permission android:name="android.permission.RECEIVE_SMS" />
这里面的android:name就要和以上的android:name一一对应
2.android:permissionGroup
我们可以看下分组的具体定义内容。

<permission-group android:name="android.permission-group.MESSAGES"
android:label="@string/permgrouplab_messages"
android:description="@string/permgroupdesc_messages" />

在对应的string.xml中,如下定义:

<string name="permgrouplab_messages" msgid="7521249148445456662">"您的信息"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"读写短信、电子邮件和其他消息。"</string>

在红米4.4.2版本没将该相同分组的放在一类,可以看到我之前的截图就知道了,

正如,网上一篇题为【android中permission_group与permisson区别、作用】(http://www.cnblogs.com/0616--ataozhijia/p/4244738.html)博客所解释:

【在定义 permission 时, 为每个Permission都进行了分组, 每一个Permission都有一个PermissionGroup属性。而PermissionGroup在定义时,仅仅制定了label和descrip , 就是说明一下这个权限组的作用,没什么其他用处。】

而在另一部手机上面测试的结果如下:

这里可以看出安卓会将相同组的组合在一起显示,比如 【读取您的讯息(短信或彩信)】和【接收讯息】放置一起显示,共享左侧的同一个【短信】logo,点击时,弹出 分组信息。但是在红米手机上面测试,这个分组是没有功能,只是内部分类,点击也不会弹出任何信息,有分组和没有分组在ui界面上面显示是没有区分的。可能导致这个测试结果的原因,要么和ui有关系(小米手机是用定制的MIUI界面),要么和手机的安卓版本有关系,具体大家可以再测试测试。
3.android:protectionLeve
共有四个属性
(1)Normal
风险较低的权限,任何应用都可以申请,在安装应用时,不会直接提示给用户,点击全部才会展示。
(2)Dangerous
风险较高的权限,任何应用都可以申请,安装时需要用户确认才能使用。
(3)Signature
仅当申请该权限的应用程序与声明该权限的程序使用相同的签名时,才赋予该权限。
(4)SignatureOrSystem
仅当申请该权限的应用程序位于相同的Android系统镜像中,或申请该权限的应用程序与声明该权限的程序使用相同的签名时,才赋予该权限。
其中 读取短信是一种Dangerous级别

4.android:label
我们打开
http://androidxref.com/4.1.1/xref/frameworks/base/core/res/res/values-zh-rCN/strings.xml
,很遗憾,我们看到,里面的中文都显示为乱码,可能很编码有关系,最终还是没有弄好,没有关系,
因为我手机用的是4.4.2版本,所以打开
http://androidxref.com/4.4.2_r1/xref/frameworks/base/core/res/res/values-zh-rCN/strings.xml#201
看下,中文显示不是乱码,

<string name="permlab_readSms" msgid="8745086572213270480">"读取您的讯息(短信或彩信)"</string><string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"允许该应用读取您平板电脑或 SIM 卡上存储的短信。此权限可让该应用读取所有短信,而不考虑短信内容或机密性。"</string><string name="permdesc_readSms" product="default" msgid="3695967533457240550">"允许该应用读取您手机或 SIM 卡上存储的短信。此权限可让该应用读取所有短信,而不考虑短信内容或机密性。"</string>

注意下,是不是和以下的显示是一样一样的?

5.注意点1,如果非要查看4.1.1版本的string.xml,上一节我们还告诉大家另一个网站,打开
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.1.1_r1/frameworks/base/core/res/res/values-zh-rCN/strings.xml?av=f
这次就可以看到了,如下:

 <string name="permlab_readSms" msgid="8745086572213270480">"读取您的文字讯息(短信或彩信)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"允许该应用读取您平板电脑或 SIM 卡上存储的短信。此权限可让该应用读取所有短信,而不考虑短信内容或机密性。"</string><string name="permdesc_readSms" product="default" msgid="3695967533457240550">"允许该应用读取您手机或 SIM 卡上存储的短信。此权限可让该应用读取所有短信,而不考虑短信内容或机密性。"</string>

string.xml在不同的安卓版本中,对应的字符串内容也不一样,甚至连定义的变量名也不一样

好了,今天就讲到这里
转载请注明出处:http://blog.csdn.net/ljb568838953/article/details/52188715

相关文章:【安卓系统源码学习之在线阅读】Android程序员必备本领--查看系统源代码

【安卓系统源码学习之permission】 系统源代码AndroidManifest.xml分析之permission解读相关推荐

  1. java计算机毕业设计夕阳红养老院系统源码+lw文档+系统+数据库

    java计算机毕业设计夕阳红养老院系统源码+lw文档+系统+数据库 java计算机毕业设计夕阳红养老院系统源码+lw文档+系统+数据库 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开 ...

  2. java计算机毕业设计小说阅读网站系统源码+lw文档+系统+数据库

    java计算机毕业设计小说阅读网站系统源码+lw文档+系统+数据库 java计算机毕业设计小说阅读网站系统源码+lw文档+系统+数据库 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开 ...

  3. java计算机毕业设计物流站环境监测系统源码+lw文档+系统+数据库

    java计算机毕业设计物流站环境监测系统源码+lw文档+系统+数据库 java计算机毕业设计物流站环境监测系统源码+lw文档+系统+数据库 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...

  4. java计算机毕业设计线上书城系统源码+lw文档+系统+数据库

    java计算机毕业设计线上书城系统源码+lw文档+系统+数据库 java计算机毕业设计线上书城系统源码+lw文档+系统+数据库 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件: ...

  5. PHP随机静态页面生成系统源码雨尘SEO系统

    介绍: PHP随机静态页面生成系统源码雨尘SEO系统v1.3 一款随机静态页面生成系统,一秒钟可生成上千条单页面,批量生成单页用来做SEO是非常不错的源码. 雨尘SEO静态页面生成系统源码v1.3版本 ...

  6. PHP随机静态页面生成系统源码雨尘SEO系统v1.3

    介绍: PHP随机静态页面生成系统源码雨尘SEO系统v1.3 一款随机静态页面生成系统,一秒钟可生成上千条单页面,批量生成单页用来做SEO是非常不错的源码.雨尘SEO静态页面生成系统源码v1.3版本, ...

  7. JAVA JSP 餐厅点餐系统源码(点餐系统)jsp点餐系统网上订餐系统在线订餐系统

    JAVA JSP javaweb餐厅点餐系统源码(点餐系统)jsp点餐系统网上订餐系统在线订餐系统

  8. javaweb JAVA JSP购物系统购物商城系统源码(jsp电子商务系统)购物系统mvc

    javaweb JAVA JSP购物系统购物商城系统源码(jsp电子商务系统)购物系统mvc protected void doGet(HttpServletRequest req, HttpServ ...

  9. javaweb JAVA JSP论坛系统源码BBS在线论坛系统源码(电影论坛)

    javaweb JAVA JSP论坛系统源码BBS在线论坛系统源码(电影论坛) 常见的Javaweb题材有 理财系统,就业管理系统,汽车租赁,简易网盘,疫情数据查看,在线招标房,屋租赁,教务管理,医院 ...

最新文章

  1. CSS3透明属性opacity
  2. 在 Keil uVision4 MDK下配置开发STM32F103Z完整教程
  3. Redis 性能问题分析
  4. 【OMP信道估计】基于OMP压缩感知的信道估计算法的MATLAB仿真
  5. python报错 TypeError: string indices must be integers
  6. websocket在web项目中的使用
  7. STM32F4 HAL 库开发报错:Hal_StatusTypeDef is undefined的解决办法
  8. 的使用go_使用 Go 开发 Prometheus Exporter
  9. 500 OOPS: vsftpd: both local and anonymous access disabled
  10. Qt中线程的简单使用
  11. pthon_函数式编程与面向对象编程的比较
  12. html前沿技术网页,HTML5新技术给网站带来了哪些改变
  13. Linux之如何启动tomcat服务
  14. linux python tab补全_Linux设置python自动tab自动补全
  15. win10命令行快捷键
  16. 如何生成密钥,私钥,签名
  17. mysql护眼参数,VS2013设置护眼背景颜色
  18. 探究:软件工程中的test oracle到底是什么意思?
  19. 《第五项修炼,学习型组织的艺术与实践》读书笔记
  20. 人生规划:20岁到60岁我该干什么(zz)

热门文章

  1. 上证50etf期权多少钱能做?
  2. jquery validate验证
  3. Pytorch搭建FCN网络
  4. 根据iphone3/ios5开发基础教程-录制ios视频基础教程-视频下载专辑/反馈
  5. STM32看门狗作用
  6. 对学习计算机专业的人一些忠告 (转)
  7. LVDS信号采集,Pal制模拟视频输出
  8. 大数据架构-使用HBase和Solr配置存储与索引
  9. 鼠标猫html,游标猫(鼠标特效插件)
  10. 是时候抛弃Eclipse转向IntelliJ了