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();
}

参考

Normal权限列表

权限组

Permissions Best Practices



《架构文摘》每天一篇架构领域重磅好文,涉及一线互联网公司应用架构(高可用、高性 能、高稳定)、大数据、机器学习等各个热门领域。

Marshmallow权限使用的更多相关文章

  1. Android 6.0 运行时权限处理完全解析

    一.概述 随着Android 6.0发布以及普及,我们开发者所要应对的主要就是新版本SDK带来的一些变化,首先关注的就是权限机制的变化.对于6.0的几个主要的变化,查看查看官网的这篇文章http:// ...

  2. Android M(6.0) 权限相关

    原文链接:http://jijiaxin89.com/2015/08/30/Android-s-Runtime-Permission/ Android M 新的运行时权限开发者需要知道的一切   an ...

  3. 谈谈Android 6.0运行时权限理解

    前言 谷歌在2015年8月份时候,发布了Android 6.0版本,代号叫做“棉花糖”(Marshmallow ),其中的很大的一部分变化,是在用户权限授权上,或许是感觉之前默认授权的不合理,现在6. ...

  4. Android 6.0权限全面详细分析和解决方案

    原文: http://www.2cto.com/kf/201512/455888.html http://blog.csdn.net/yangqingqo/article/details/483711 ...

  5. Android M新的运行时权限开发者需要知道的一切

    android M 的名字官方刚发布不久,最终正式版即将来临!android在不断发展,最近的更新 M 非常不同,一些主要的变化例如运行时权限将有颠覆性影响.惊讶的是android社区鲜有谈论这事儿, ...

  6. API23时权限不被许可

    In Android 6.0 Marshmallow, application will not be granted any permission at installation time. Ins ...

  7. Android 6.0的运行时权限

    原文  http://droidyue.com/blog/2016/01/17/understanding-marshmallow-runtime-permission/ 主题 安卓开发   Andr ...

  8. Android 6.0权限

    在android 6.0 Marshmallow版本之后,系统不会在软件安装的时候就赋予该app所有其申请的权限,对于一些危险级别的权限,app需要在运行时一个一个询问用户授予权限. 只有那些targ ...

  9. Android PermissionChecker 权限全面详细分析和解决方案

    原文: http://www.2cto.com/kf/201512/455888.html http://blog.csdn.net/yangqingqo/article/details/483711 ...

随机推荐

  1. MySql定时器,亲测可用

    1. 查看数据库的event功能是否开启,在MySql中event默认是关闭的,需要查看并且要确保event处于开启状态 sql:show VARIABLES LIKE '%sche%'; 如果eve ...

  2. Leetcode之回溯法专题-17. 电话号码的字母组合(Letter Combinations of a Phone Number)

    [Leetcode]17. 电话号码的字母组合(Letter Combinations of a Phone Number) 题目描述: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组 ...

  3. MSIL实用指南-方法的调用

    方法调用指令主要有Call和Callvirt. 调用static或sealed修饰的方法,用Call指令. 调用virtual或abstract修饰的方法,用Callvirt指令. 代码实例: ilG ...

  4. .NET Core 学习资料精选:进阶

    .NET 3.0 这个月就要正式发布了,对于前一篇博文<.NET Core 学习资料精选:入门>大家学的可还开心?这是本系列的第二篇文章:进阶篇,喜欢的园友速度学起来啊. 对于还在使用传统 ...

  5. 学会spss就能找到数据分析工作吗

     大学课堂上学习了spss,老师也讲了很多知识,但是现在准备毕业了,我做的实习工作就是用业内的数据进行最新的行业研究.现在真正需要用到spss进行分析了,我却看不懂老板给的数据和分析要求,难道这就是理 ...

  6. Apache JMeter HTTPS(S) Test Script Recorder

    参考Apache官网资料:http://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.pdf 1. 进入apache-jmeter-2. ...

  7. JMeter简介及使用JMeter来访问网站

    参考: http://jmeter.apache.org/ http://blog.chinaunix.net/uid-26884465-id-3416869.html http://www.ltes ...

  8. P2059 [JLOI2013]卡牌游戏 概率DP

    link:https://www.luogu.org/problemnew/show/P2059 题意: 有n个人,类似约瑟夫环的形式踢人,但是报的数是不同的,是在给定的许多数中随机抽取,问最后第i个 ...

  9. HDU2896病毒入侵AC_自动机

    #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...

  10. codeforces E. Okabe and El Psy Kongroo(dp+矩阵快速幂)

    题目链接:http://codeforces.com/contest/821/problem/E 题意:我们现在位于(0,0)处,目标是走到(K,0)处.每一次我们都可以从(x,y)走到(x+1,y- ...