返回顶部
首页 > 资讯 > 移动开发 >谈谈Android6.0运行时的权限处理
  • 392
分享到

谈谈Android6.0运行时的权限处理

运行Android 2022-06-06 07:06:19 392人浏览 八月长安
摘要

运行时权限介绍 Android 6.0在我们原有的AndroidManifest.xml声明权限的基础上, 又新增了运行时权限动态检测,以下权限都需要在运行时判断: &nb

运行时权限介绍

Android 6.0在我们原有的

AndroidManifest.xml
声明权限的基础上,

又新增了运行时权限动态检测,以下权限都需要在运行时判断:

     1、身体传感器

     2、日历

     3、摄像头

     4、通讯录

     5、地理位置

     6、麦克风

     7、电话

     8、短信

     9、存储空间

在 Android 6.0 中,app 如果想要获得某些权限,会在应用中弹出一个对话框,让用户确认是否授予该权限。

具体的截图如下:

这要做的好处就是运行一个 app 时可以拒绝其中的某些权限,防止 app 触及到你的隐私(比如说通讯录、短信之类的)。而在 Android 6.0 之前,若同意安装 app ,就意味着该 app 可以获取权限列表中的所有权限。(注:这里所指的都是原生 Android 系统,比如 MIUI 之类的第三方 ROM 很早就具备了这种功能。)

接下来就来看看相关的 api 吧,首先我们来看看

Context.checkSelfPermission(String permission) 
方法,该方法主要用于检测该 app 是否已经被赋予了某权限,传入的参数有。如果已被赋予,则返回
PERMISSION_GRANTED 
,否则返回
PERMISSION_DENIED 

若返回了

 PERMISSION_DENIED 
,那么我们就要去申请该权限了。这时就要用到
Activity.requestPermissions(String[] permissions, int requestCode) 
这个方法了。顾名思义,该方法的作用就是申请某些权限了。第一个参数就是要申请的权限,可以看到参数形式是一个数组,也就是说可以一次申请多个权限。而第二个参数就是申请权限的代号,主要用于在之后的回调中选择。

当用户在权限申请的对话框中作出选择后,就会回调

onRequestPermissionsResult (int requestCode, String[] permissions, int[] grantResults) 
方法。

     第一个参数就是上面的权限代号;

     第二个参数是申请的权限数组;

     第三个参数就是权限申请的结果。

结合上面的几个方法,可以写出如下所示的权限申请代码模版:


public static final int READ_CONTACTS_REQUEST_CODE = 101;
// 如果权限没有被授予
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.READ_CONTACTS) !=
 PackageManager.PERMISSION_GRANTED) {
 // 申请权限
 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CONTACTS}, READ_CONTACTS_REQUEST_CODE);
} else {
 // TODO 权限已经被授予
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
 super.onRequestPermissionsResult(requestCode, permissions, grantResults);
 switch (requestCode) {
 case READ_CONTACTS_REQUEST_CODE:
  if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
  // TODO 用户已经授予了权限
  } else {
  // TODO 用户拒绝授予权限
  }
  break;
 }
}

在这里,还有一个方法需要注意下,那就是

shouldShowRequestPermissionRationale (Activity activity, String permission)
方法。这个方法的作用就是当用户拒绝了某个权限之后,下一次就会显示出需要该权限的说明。

关于运行时申请权限基本就这样了,值得提醒的是,并不是所有的权限都需要运行时申请,只有“危险”的权限才通过运行时来申请。比如说读取联系人、获取位置信息、读写SD卡等等都为“危险权限”,而比如振动、联网、蓝牙等就是普通权限了,就不需要运行时申请了。

说完了运行时申请权限后,另外还有一点需要注意的是,在 Android 6.0 显示悬浮窗也有一个“坑”。如果调用平常的显示悬浮窗的方法,会抛出 “permission denied for this window type” 异常。解决的方案就是在显示悬浮窗之前,需要调用一下

Settings.canDrawOverlays(context) 这
个方法。若该方法返回 true ,则说明用户同意创建悬浮窗;否则可以跳转到相关的设置页面。具体的代码模版如下:


if (Build.VERSION.SDK_INT >= 23) {
 if (Settings.canDrawOverlays(context)) {
 // 显示悬浮窗
 } else {
 // 跳转到相关的设置页面
 Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
 startActivity(intent);
 }
} else {
 // 版本低于Android 6.0,直接显示悬浮窗
}

总结

好了,就到这里吧,以上就是Android6.0运行时的权限处理的全部问题,希望这篇文章对大家开发Android能有所帮助。

您可能感兴趣的文章:Android 操作系统获取Root权限 原理详细解析Android获取ROOT权限的实例代码Android权限控制之自定义权限Android中Root权限获取的简单代码Android需要提升权限的操作方法android编程判断应用是否具有某个权限的方法Android无需申请权限拨打电话的两种方式Android用代码获取手机root之后的最高权限Android 手动获取判断处理权限Android辅助权限的介绍和配置完整记录


--结束END--

本文标题: 谈谈Android6.0运行时的权限处理

本文链接: https://lsjlt.com/news/24261.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 谈谈Android6.0运行时的权限处理
    运行时权限介绍 Android 6.0在我们原有的AndroidManifest.xml声明权限的基础上, 又新增了运行时权限动态检测,以下权限都需要在运行时判断: &nb...
    99+
    2022-06-06
    运行 Android
  • 详解Android6.0运行时权限管理
    自从Android6.0发布以来,在权限上做出了很大的变动,不再是之前的只要在manifest设置就可以任意获取权限,而是更加的注重用户的隐私和体验,不会再强迫用户因拒绝不该拥...
    99+
    2022-06-06
    运行 Android
  • 谈谈Golang停止运行的几种情况与处理方法
    Golang是一门非常流行的编程语言,被广泛应用于各种系统和领域中。在开发过程中,Golang的运行出现停止是比较常见的情况,而了解停止的原因和处理方法是我们开发人员必须掌握的技能之一。本文将探讨Golang停止运行的几种情况和处理方法。一...
    99+
    2023-05-14
  • 谈谈Oracle 数据库的系统权限UNLIMITED TABLESPACE
    谈谈Oracle 数据库的系统权限UNLIMITED TABLESPACE作者:赵全文 网名:guest    前日上午,开发同学反馈,应用程序在连接一套Oracle 11.2.0.4....
    99+
    2024-04-02
  • Android13通知运行时权限
    部分应用更新到Android13以上之后,没有横幅(在屏幕上弹出)通知了。 Android 13(API 级别 33)及更高版本支持用于从应用发送非豁免(包括前台服务 [FGS])通知的运行时权限:POST_NOTIFICATIONS。此更...
    99+
    2023-09-09
    android
  • mysql管理中的运行权限
    mysql管理中的运行权限,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 mysql 管理:mysql 运行权限...
    99+
    2024-04-02
  • 浅谈python对象数据的读写权限
    面向对象的编程语言在写大型程序的的时候,往往比面向过程的语言用起来更方便,安全。其中原因之一在于:类机制。 类,对众多的数据进行分类,封装,让一个数据对象成为一个完整的个体,贴近现实生活,高度抽象化。但是,...
    99+
    2022-06-04
    浅谈 权限 对象
  • 【Linux】浅谈shell命令以及运行原理
    前言:上篇博文把linux下的基本指令讲解完了。本期我们聊聊Linux下【shell】命令及其运行原理。   目录 Shell的基本概念与作用 原理图展示  shell命令执行原理 Shell的基本概念与作用 Linux严格意...
    99+
    2023-09-05
    linux 服务器 运维
  • 详解Android权限管理之Android 6.0运行时权限及解决办法
    前言: 今天还是围绕着最近面试的一个热门话题Android 6.0权限适配来总结学习,其实Android 6.0权限适配我们公司是在今年5月份才开始做,算是比较晚的吧,不过现...
    99+
    2022-06-06
    运行 Android
  • 浅谈一下Servlet的定义以及运行原理
    目录1.什么是servlet1.1 扩展web服务器端功能1.2 servlet组件2.如何写一个servlet?3.servlet是如何运行的?4.常见问题4.1 状态码4.2 4...
    99+
    2023-03-24
    Servlet定义 Servlet原理
  • 如何使bat批处理以管理员权限运行
    这篇文章给大家分享的是有关如何使bat批处理以管理员权限运行的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、第一种方法有的电脑是非管理员登录,运行程序时,需要提示是否运行运行。解决方法如下:@ ech...
    99+
    2023-06-08
  • Android 7.0 运行时权限弹窗问题
    Android 7.0系统在运行应用的时候,对权限做了诸多限制,normal, dangerous, signature, signatureOrSystem ,取决于保护级别...
    99+
    2022-06-06
    弹窗 运行 Android
  • Android 13运行时权限变更一览
    本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每个工作日都有文章更新。 要不了多久,Android 13正式版就要发布了。 其实就在几个月前,我写了一篇关于Android 13首个开发者体验版的全面...
    99+
    2023-08-19
    android Android 13 运行时权限
  • 浅谈Python的异常处理
    Python的异常处理能力是很强大的,可向用户准确反馈出错信息。在Python中,异常也是对象,可对它进行操作。所有异常都是基类Exception的成员。所有异常都从基类Exception继承,而且都在e...
    99+
    2022-06-04
    浅谈 异常 Python
  • 【Linux】Shell运行原理和Linux权限
    大家好我是沐曦希💕 文章目录 1.shell命令以及运行原理2.Linux权限的概念3.Linux权限管理4.文件访问者的分类(人)5.文件类型和访问权限(事物属性)5.1 基本权限 6.文件权限值的表示方...
    99+
    2023-08-19
    linux 服务器 运维
  • 浅谈Python处理PDF的方法
    处理pdf文档 第一、 从文本中提取文本 第二、 创建PDF 两种方法 #使用PdfFileWriter import PyPDF2 pdfFiles = [] for filename in ...
    99+
    2022-06-04
    浅谈 方法 Python
  • 浅谈PHP如何处理毫秒级别的时间戳
    在通常情况下,我们在使用时间戳的时候,往往采用的是秒级别的时间戳。但是在程序设计过程中,有时候我们需要使用毫秒级别的时间戳。PHP作为一门功能强大的编程语言,在时间戳的处理方面也给我们提供了丰富的函数库,今天我们就来聊一聊PHP毫秒时间戳转...
    99+
    2023-05-14
    php php时间戳
  • 浅谈实时计算框架Flink集群搭建与运行机制
    一、Flink概述 1.1、基础简介 主要特性包括:批流一体化、精密的状态管理、事件时间支持以及精确一次的状态一致性保障等。Flink不仅可以运行在包括YARN、Mesos、Kubernetes在内的多种资源管理框架上,...
    99+
    2022-06-04
    Flink 集群搭建 Flink 运行机制
  • 浅谈多线程_让程序更高效的运行
    Java Thread 的一些认识:Java是抢占式线程,一个线程就是进程中单一的顺序控制流,单个进程可以拥有多个并发任务,其底层是切分CPU时间,多线程和多任务往往是使用多处理器系统的最合理方式进程可以看作一个程序或者一个应用;线程是进程...
    99+
    2023-05-31
    多线程 更高
  • 浅谈化工行业的地磅管理
    一. 化工企业的地磅管理需求 化工行业大宗原材料和燃料的管理需求非常高,以一个中大型的化工企业为例。 年产值 100亿 以大宗原材料和燃料形态存在的价值 60-70亿 每日资金周转额度 1500万 每分钟资金周转额度 10000 ...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作