专栏首页极客猴Android 6.0动态获取权限

Android 6.0动态获取权限

0x00 背景

Android系统的市场占有率不断攀升,智能手机的全面普及。这也给恶意软件、木马程序滋生提供了丰富营养。这些恶意软件、木马程序会对用户的敏感数据进行读写操作,用户的隐私收到威胁。谷歌为手机用户真是煞费苦心,在Android 6.0系统新增动态获取权限功能,目的是更好保护用户的隐私。

0x01 哪些权限需要申请

Android目前所有权限大可分为两种,一种是普通权限,另一种则是危险权限。普通权限指的是不会直接威胁到用户的安全和隐私的权限,这些权限的申请,系统会自动帮我们申请。危险权限则是可能会对用户的隐私以及设备的安全性造成威胁的权限。这些权限例如获取联系人信息、获取设备的地理位置、打开摄像头等。对于这危险权限,在Android 6.0之后必须由用户自行判断管理。如果用户授权,应用程序才会具有这相应的功能。

下图为危险权限列表,一共9组24个权限。

需要注意的一点: 如果权限组中有个权限得到用户的授权,那么该权限所在组中所有其他权限也会同时被授权。

0x02 实现

我自己基于samples-23_r02\system\RuntimePermissions\实例代码,写出了一个demo。demo是功能是动态获取摄像头权限,如果用户同意授权,则获取摄像头预览画面。 1)在AndroidMesifest.xml文件中添加摄像头权限

2)使用ActivityCompat.checkPermission()进行判断需要用到的权限是否已经经过用户授权这个方法第一个参数是上下文,第二个参数是具体的权限名。

代码可以这样写:

我在demo里面已经把权限抽取出来,封装在一个工具内中。 在MainActivity中,判断权限:

在PermissionUtil中,具体实现:

3)如果没有获得权限,就需要调用ActivityCompat.requestPermissions()方法进行申请权限,并且实现onRequestPermissionsResult()方法。 requestPermissions()一共有3个参数,第1个参数是Activity的实例,第2个参数是一个String数组,第2个参数是请求码,可以自己自行定义,只要确保是唯一值即可。

在demo中,我为了能够兼容一次申请多个权限,自己实现代码如下:

onRequestPermissionsResult()方法的具体实现:

0x03 注意项

小米手机在第一个弹出提示用户授权对话框之后,无论用户点击同意还是拒绝,下次启动都没有再次弹出对话框。所以只能引导用户进入权限管理进行修改权限。

小贴士

因微信不支持站内链接, 请点击【阅读原文】阅读完整的代码

作者:猴哥,公众号:极客猴。爱好读书,喜欢钻研技术,梦想成为文艺青年的IT Boy。

- END -

本文分享自微信公众号 - 极客猴(Geek_monkey),作者:猴哥

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-12-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 总结是成长的秘方

    时光荏苒,2018 年已经过去半年。你年初制定新年计划,不知现在完成的进度是多少了?不管怎样,应该好好总结下。

    猴哥yuri
  • Django 2.1 版本已经来袭

    一个备受关注、很多人都在使用的软件,软件开发团队会定期发布新版本。其主要目的是修复之前一些 Bug 以及新增一些新特性。Django 作为主流的 Python ...

    猴哥yuri
  • 爬虫与反爬虫的博弈

    近来这两三个月,我陆续将自己学到的爬虫技术分享出来。以标准网络库 urllib 的用法起笔,接着介绍各种内容提供工具,再到后续的 scrapy 爬虫框架系列。我...

    猴哥yuri
  • Android 权限机制与适配经验

    本文主要分享了以下几个知识点的内容,1、Android 权限机制关键知识点;2、QQ 音乐对于权限的适配经验;3、近段时间以来遇到的一些 Android 权限方...

    QQ音乐技术团队
  • 提权(2) windows权限分析

    lonelyvaf
  • JeeSite | 访问控制权限

      在各种后台系统中都会涉及到权限的管控,从功能权限的管控,到数据权限的管控,都是为了让系统的在使用的过程中更加的安全。功能权限管控是对针对不同的角色可以进行不...

    码农UP2U
  • 自制权限框架(二)注解

      上一篇中,咱们介绍了如何使用jsp自定义标签编写权限框架。在jsp中,权限标签内的内容,只有在用户拥有权限的时候,才能够正常的展示。

    小忽悠
  • 基于蓝鲸平台分分钟实现权限配置自动化

    小明有一个烦恼(不是《老板,今天我们做Oracle灾备切换演练吧!》的小明),毕业季来了,公司的招聘季也来了,每天都有新同事报道,这也意味着,他要每天到公司的几...

    嘉为科技
  • 额 明天接着修改

    每个功能都有相应的URL地址。(对功能的控制就是对URL地址访问的控制)

    lpe234
  • Linux学习笔记(七)权限管理命令

    umask默认权限是Linux权限的一种,主要用于让Linux中的新建文件和目录拥有默认权限

    LRainner

扫码关注云+社区

领取腾讯云代金券