文档章节

Runtime Permissions

lightUp
 lightUp
发布于 2016/07/22 10:31
字数 833
阅读 9
收藏 0
点赞 0
评论 0

Runtime Permissions

在Android 6.0中谷歌摒弃了之前的install time permissions model取而代之的是**runtime permissions model**。先来说说install time permissions model,这个大家不陌生,就是当Android App安装的时候会向用户展示一坨权限,如果此时用户选择安装,则表示用户同意将这些权限赋予App,如果用户不同意那么这个App就会取消安装。runtime permissions model就牛逼了,在App安装的时候同样会向用户展示所需要的权限,并且在用户选择安装App的时候并不表示用户将这些权限赋予了App,而是需要App在运行阶段主动去申请这些权限。这样做的好处显而易见,App对权限的申请对于用户来说变得更加透明,而且用户对App权限的控制也更加灵活。 权限的分类

Android将系统权限分成了四个保护等级:

  • normal,
  • dangerous,
  • signature,
  • signatureOrSystem

其中最常见的是normal permission和dangerous permission两类。

normal permission

normal permission涵盖的一系列权限的共同点是:App需要访问App运行沙盒以外的数据或资源,但是这些资源对用户的隐私或其他App的危险性较小,下面列举一下这些权限:

ACCESS_LOCATION_EXTRA_COMMANDS

ACCESS_NETWORK_STATE ACCESS_NOTIFICATION_POLICY ACCESS_WIFI_STATE BLUETOOTH BLUETOOTH_ADMIN BROADCAST_STICKY CHANGE_NETWORK_STATE CHANGE_WIFI_MULTICAST_STATE CHANGE_WIFI_STATE DISABLE_KEYGUARD EXPAND_STATUS_BAR FLASHLIGHT GET_PACKAGE_SIZE INTERNET KILL_BACKGROUND_PROCESSES MODIFY_AUDIO_SETTINGS NFC READ_SYNC_SETTINGS READ_SYNC_STATS RECEIVE_BOOT_COMPLETED REORDER_TASKS REQUEST_INSTALL_PACKAGES SET_TIME_ZONE SET_WALLPAPER SET_WALLPAPER_HINTS TRANSMIT_IR USE_FINGERPRINT VIBRATE WAKE_LOCK WRITE_SYNC_SETTINGS SET_ALARM INSTALL_SHORTCUT

>
>以上这些就是Android 6.0中所有的normal permissions了。

### dangerous permissions

dangerous permissions 涵盖的一系列权限的共同点是:这些权限会读写用户的隐私信息,也可能会读写用户存储的数据或影响其他App的正常运行。下面例举出这些权限:


> - CALENDAR
>     - READ_CALENDAR
    - WRITE_CALENDAR
> - CAMERA
>     - CAMERA
> - CONTACTS	
>     - READ_CONTACTS
    - WRITE_CONTACTS
    - GET_ACCOUNTS

> - LOCATION	
>     - **ACCESS\_FINE\_LOCATION**
    - **ACCESS\_COARSE\_LOCATION**

> - MICROPHONE
>     - RECORD_AUDIO
> 
> - SENSORS
> 	- BODY_SENSORS
> - PHONE	
>      - READ_PHONE_STATE
     - CALL_PHONE
     - READ_CALL_LOG
     - WRITE_CALL_LOG
     - ADD_VOICEMAIL
     - USE_SIP
     - PROCESS\_OUTGOING_CALLS
> 
> - SMS
> 	- SEND_SMS
	- RECEIVE_SMS
	- READ_SMS
	- RECEIVE_WAP_PUSH
	- RECEIVE_MMS

> - STORAGE
> 	- **READ\_EXTERNAL_STORAGE**
	- **WRITE\_EXTERNAL_STORAGE**

以上这些权限就是Android6.0中所有的dangerous permissions。

**Runtime Permissions**针对的是**dangerous permissions**,normal permissions还是会在App安装期间被默认赋予。


## ps:关于protection level

> 
> 有时候别人创建的应用有自定义的Permission, 在permissionLevel的定义时设置了android:protectionLevel这一项。取值范围有四种:
>  
> 
- "normal" 
- "dangerous" 
- "signature" 
- "signatureOrSystem" 

> 如果定义的是前面两种**`normal`**或者**`dangerous`**, 我们自己的应用需要去访问其对应受保护的资源时只需要在androidManifest.xml中添加相同的uses-permission就行了。 
> 
> 如果是**`signature`**, 我们仅仅添加对权限的使用还不行, 必须同时使用相同的证书来签名。

>>A permission that the system grants only if the requesting application is signed with the same certificate as the application that declared the permission. If the certificates match, the system automatically grants the permission without notifying the user or asking for the user's explicit approval.
 
> 
> 如果是**`signatureOrSystem`**, 不仅要有相同的签名, 还必须有相同的sharedUserId.
>> A permission that the system grants only to applications that are in the Android system image or that are signed with the same certificate as the application that declared the permission. Please avoid using this option, as the `signature` protection level should be sufficient for most needs and works regardless of exactly where applications are installed. The "signatureOrSystem" permission is used for certain special situations where multiple vendors have applications built into a system image and need to share specific features explicitly because they are being built together.


参考:
https://developer.android.com/guide/topics/manifest/permission-element.html

http://blog.csdn.net/l_serein/article/details/6776377

http://www.wilkeryun.com/android-6-0%E6%96%B0%E7%89%B9%E6%80%A7%E4%B9%8Bruntime-permission/925.html

© 著作权归作者所有

共有 人打赏支持
lightUp
粉丝 10
博文 132
码字总数 287936
作品 0
杭州
程序员
求高手帮忙啊,velocity加载不上模板老是说路径有问题悲剧的

Template template = new Template(); template = velocityConfigurers.getVelocityEngine().getTemplate("template/soliloquizeContent.vm"); 我的属性配置是这样的velocimacro.permissions......

卡布达
2015/08/17
514
2
Android 共享文件的 Runtime 权限

在开发 Android 应用时,总会涉及到获取打电话、地理位置、网络等敏感的用户信息的权限,在 Android 中,联系人、当前位置等这些敏感信息都是由 permissions 保护的,Android 6.0 Marshmall...

OneAPM蓝海讯通
2015/12/09
19
0
android M 权限管理

以上代码再这两篇文章基础上修改:Android 6.0RunTime Permission完美解决方案 Android M 新的运行时权限开发者需要知道的一切

GalaxyBruce
2016/06/30
32
0
Velocity属性汇总

Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information rega......

强子哥哥
2016/05/21
120
0
android6.0 ble 权限问题

在5.0上系统运行ok,把编译版本改成6.0后报下面这个错 阿西吧!!!这是问题是6.0系统全新的权限机制导致的[可以参考这篇文章] (http://jijiaxin89.com/2015/08/30/Android-s-Runtime-Permissio...

玫瑰的名字
2016/06/30
96
0
Flume学习笔记

官方文档 核心组件 Source 收集 Channel 聚集 Sink 输出 Flume 安装前置条件 Java Runtime Environment - Java 1.8 or later Memory - Sufficient memory for configurations used by sourc......

Meet相识_bfa5
01/01
0
0
Rocket 0.8.1 发布,CoreOS 的容器引擎

Rocket 0.8.1 发布,更新内容如下: 该版本一些重大的 UX 变化: Arguments can now be passed through to CNI plugins on the command line - see the networking documentation for detail......

oschina
2015/09/17
427
0
Azkaban的Web Server源码探究系列4: Azkaban Server初始化

上一节做了准备工作,现在开始初始化Azkaban的Web Server. --------------------------------------------------------------------------------------------------------- 第一步就是初始化......

强子哥哥
2016/04/06
449
0
Rocket 0.5.3 发布,CoreOS 的容器引擎

Rocket 0.5.3 发布,此版本主要更新信息如下: {Container,container} changed globally to {Pod,pod} {Rocket,rocket} changed globally to rkt install properly sets permissions for al......

oschina
2015/04/01
1K
5
Android开发技术周报 Issue#158

十二月 11, 20170 条评论AndroidDevWeekly 新闻 [图]Android Wear Oreo上线:新增调整通知震动强度等功能 Google Android文件管理器Files Go现已面向全球提供 谷歌宣布TensorFlow Lite...

脉脉不得语
2017/12/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

tomcat 学习笔记之 Session管理

1、Catalina 通过一个 Session 管理器的组件来管理建立的Session 对象 该组件由 org.apache.catalina.Manager 接口表示 Session 管理器必须与一个 Context 关联 Session 管理器负责,创建、更...

职业搬砖20年
6分钟前
0
0
jquery获取input框的几种方式

//如何用jquery获取<input id="test" name="test" type="text"/>中输入的值?$(" #test ").val()$(" input[ name='test' ] ").val()$(" input[ type='text' ] ").val()$(" input[ ......

gulf
9分钟前
0
0
gradle的环境变量的配置

gradle的环境变量的配置 1.首先下载jdk,并且配置jdk的环境变量. 2.找到自己AS安装gradle的目录 我自己的目录为:F:\Android Studio3.1.3\gradle\gradle-4.4 创建环境变量:GRADLE_PATH: F:\A...

android-key
15分钟前
0
0
saltstack配置apache

1.相关配置 #vim /etc/salt/master //打开如下内容的注释 file_roots: base: - /srv/salt #mkdir /srv/salt #vim /srv/salt/top.sls base: 'slaver.test.com': - apache 注意:若换成 '*',则......

硅谷课堂
16分钟前
0
0
Nested enum types are implicitly static

.Nested enum types are implicitly static So there's no need to declare them static explicitly....

Yixin_Nemo
17分钟前
0
0
xlsxwriter 常用excel格式

官方文档:xlsxwriter 官方文档 微博只对常用的方法做了总结和coding,详细方法请参考官方文档 常规写入数据: 写入字符串write_string() import xlsxwriterworkbook = xlsxwriter.Workb...

白木日勿
17分钟前
0
0
TeX

Ito LaTeX是一类用于编辑和排版的软件,用于生成PDF文档。 LaTeX编辑和排版的核心思想在于,通过\section和\paragraph等语句,规定了每一句话在文章中所从属的层次,从而极大方便了对各个层次...

E-C-Ares
20分钟前
0
0
nodejs调用webservice接口

刚接触花了一天时间去查找资料,网上资料也是够了,很多都试了不行,最后看了还是那么简单 主要是了node-soap node-soap-ntlm soap-ntlm-2,这几个试了都有缺陷, 1 首先安装soap npm instal...

lovelan1314
20分钟前
0
0
SUSE Linux 将被 EQT 收购

SUSE再次易主 Micro Focus 宣布将其一大部分业务出售给瑞典私人股本集团殷拓(EQT),所得的一部分收益将用来减轻债务,其余部分将返给股东。EQT 是一家专注于开发领域的投资公司,在软件行业拥...

linux-tao
28分钟前
0
0
Elastic-Job定时任务

用Elastic-Job可解决分布式重复执行问题 如果业务工程采用集群化的部署,可能会多次重复执行定时任务而导致系统的业务逻辑错误,并产生系统故障。 job.properties simple.id=recommendJobs...

lsjlgo
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部