Marshmallow权限使用
Google发布Android 6.0后对用权限的控制更加严格,在Android5.1或更低的版本中用户能在App的安装期间或使用设置应用程序权限来同意或拒绝某个权限,而在Android6.0或更高的版本中除了可以向上面说明的那样处理权限还可以在App任意运行期间请求权限。
Android权限
Android将权限分为normal和dangerous两类。
Normal权限
简单的来说这个这个级别的权限只会对用户的隐私和设备造成很小的影响如INTERNET、ACCESS_NETWORK_STATE等权限。如果你在Manifest中声明多个Normal权限,Android会在App安装期间自动的通过这些Normal权限请求,Android不会提示用户Normal权限且用户不能移除那些权限。
Dangerous权限
如果App需要的数据或资源涉及到用户的私有数据如READ_CONTACTS、READ_SMS等权限。Dangerous权限需要用户显示的同意。
检查权限
在Android6.0或更高的系统中权限的处理可以在任何APP运行期间,Android已经提供的兼容库并包含一系列的方法去处理权限。注意权限还是要在Manifest中声明的。
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>
以上声明APP需要读SMS权限,在APP安装后Android6.0或更高的版本中这些权限可能默认都是不允许的。为兼容新的Andorid系统应该在读和发送SMS时先检查是否有READ_SMS权限。
int isGranted = ContextCompat.checkSelfPermission(this, android.Manifest.permission.READ_SMS);
if(PackageManager.PERMISSION_GRANTED == isGranted){
readSms();
}
以上代码检查是否有READ_SMS权限,如果有则读取短信。
请求权限
当通过上面的checkSelfPermission
方法返回PackageManager.PERMISSION_DENIED
表示当前还没有READ_SMS权限需要去手动请求权限。
final int READ_SMS_PERMISSION = 0x1;
public void requestSmsPermission(View view){
final String[] permissions = new String[]{
android.Manifest.permission.READ_SMS,
};
ActivityCompat.requestPermissions(this, permissions, READ_SMS_PERMISSION);
}
调用requestPermissions
方法系统会弹出Dialog询问用户是否同意该权限。
处理权限响应
用户对APP权限的请求做出响应后,系统会调用Activity的onRequestPermissionsResult
方法。
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode == READ_SMS_PERMISSION && grantResults[0] == PackageManager.PERMISSION_GRANTED)
readSms();
}
参考
《架构文摘》每天一篇架构领域重磅好文,涉及一线互联网公司应用架构(高可用、高性 能、高稳定)、大数据、机器学习等各个热门领域。
Marshmallow权限使用的更多相关文章
- Android 6.0 运行时权限处理完全解析
一.概述 随着Android 6.0发布以及普及,我们开发者所要应对的主要就是新版本SDK带来的一些变化,首先关注的就是权限机制的变化.对于6.0的几个主要的变化,查看查看官网的这篇文章http:// ...
- Android M(6.0) 权限相关
原文链接:http://jijiaxin89.com/2015/08/30/Android-s-Runtime-Permission/ Android M 新的运行时权限开发者需要知道的一切 an ...
- 谈谈Android 6.0运行时权限理解
前言 谷歌在2015年8月份时候,发布了Android 6.0版本,代号叫做“棉花糖”(Marshmallow ),其中的很大的一部分变化,是在用户权限授权上,或许是感觉之前默认授权的不合理,现在6. ...
- Android 6.0权限全面详细分析和解决方案
原文: http://www.2cto.com/kf/201512/455888.html http://blog.csdn.net/yangqingqo/article/details/483711 ...
- Android M新的运行时权限开发者需要知道的一切
android M 的名字官方刚发布不久,最终正式版即将来临!android在不断发展,最近的更新 M 非常不同,一些主要的变化例如运行时权限将有颠覆性影响.惊讶的是android社区鲜有谈论这事儿, ...
- API23时权限不被许可
In Android 6.0 Marshmallow, application will not be granted any permission at installation time. Ins ...
- Android 6.0的运行时权限
原文 http://droidyue.com/blog/2016/01/17/understanding-marshmallow-runtime-permission/ 主题 安卓开发 Andr ...
- Android 6.0权限
在android 6.0 Marshmallow版本之后,系统不会在软件安装的时候就赋予该app所有其申请的权限,对于一些危险级别的权限,app需要在运行时一个一个询问用户授予权限. 只有那些targ ...
- Android PermissionChecker 权限全面详细分析和解决方案
原文: http://www.2cto.com/kf/201512/455888.html http://blog.csdn.net/yangqingqo/article/details/483711 ...
随机推荐
- 浅谈jQuery中的Ajax
浅谈jQuery中的Ajax 一.前言 jQuery 对 Ajax 操作进行了封装, 在 jQuery 中最底层的方法时 $.ajax(), 第二层是 load(), $.get() 和 $.post ...
- 《阿里巴巴Java开发手册1.4.0》阅读总结与心得(四)
(七)设计规约 1. [强制] 存储方案和底层数据结构的设计获得评审一致通过,并沉淀成为文档. 说明: 有缺陷的底层数据结构容易导致系统风险上升,可扩展性下降,重构成本也会因历史数据迁移和系统平滑过渡 ...
- hdu-6601 Keen On Everything But Triangle
题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=6601 Description N sticks are arranged in a row, and ...
- 混合图欧拉回路POJ1637Sightseeing tour
http://www.cnblogs.com/looker_acm/archive/2010/08/15/1799919.html /* ** 混合图欧拉回路 ** 只记录各定点的出度与入度之差,有向 ...
- CF995B Suit and Tie 贪心 第十三
Suit and Tie time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- TLS加密远程连接Docker
<Docker远程连接设置>一文讲述了开启Docker远程连接的方法,但那种方法不安全,因为任何客户端都可以通过Docker服务的IP地址连接上去,今天我们就来学习Docker官方推荐的安 ...
- springboot的最简创建方式
springboot是目前比较流行的技术栈之一,我在这里写一个springboot工程最简方式 首先开发工具是IDEA,双击打开IDEA,点击Create new Project 进入到这个页面,选择 ...
- super(classname,self).__init__() 作用
- Myeclipse项目工程目录中各种Libraries的含义
MyEclipse工程目录下一般会有以下几类Libraries,如图: 各种Libraries的含义如下: JRE System Library:Java SE 的常用库文件集合,构建任何Java项目 ...
- SpringBoot系列__02HelloWorld探究
在前文中,我们创建了一个简单的hello world,现在,利用这个简单的程序,来简单分析一下SpringBoot的启动过程. 如果你是使用过SSM框架的人,尤其是4.0之前的版本,相信你使用过xml ...