Android M(6.0)API 23后加入了权限请求设置,APP需要使用某些权限需要主动申请。

权限分为3类,一组是Normal权限,无需申请,另一组是Dangerous,需申请,然后是特殊权限,需申请。

先看下Normal权限列表:

再看下Dangerous权限列表:

危险权限实际上才是运行时权限主要处理的对象,这些权限可能引起隐私问题或者影响其他程序运行。Android中的危险权限可以归为以下几个分组:

CALENDAR

CAMERA

CONTACTS

LOCATION

MICROPHONE

PHONE

SENSORS

SMS

STORAGE

各个权限分组与其具体的权限,可以参考下图:

想要不支持运行时权限机制很简单,只需要将targetSdkVersion设置低于23就可以了,意思是告诉系统,我还没有完全在API 23(6.0)上完全搞定,不要给我启动新的特性。

特殊权限:

就是一些特别敏感的权限,在Android系统中,主要由两个

SYSTEM_ALERT_WINDOW,设置悬浮窗,进行一些黑科技

WRITE_SETTINGS 修改系统设置

关于上面两个特殊权限的授权,做法是使用startActivityForResult启动授权界面来完成。

请求SYSTEM_ALERT_WINDOW

private static final int REQUEST_CODE = 1;

private void requestAlertWindowPermission() {

Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);

intent.setData(Uri.parse("package:" + getPackageName()));

startActivityForResult(intent, REQUEST_CODE);

}

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if (requestCode == REQUEST_CODE) {

if (Settings.canDrawOverlays(this)) {

Log.i(LOGTAG, "onActivityResult granted");

}

}

}

上述代码需要注意的是

使用Action Settings.ACTION_MANAGE_OVERLAY_PERMISSION启动隐式Intent

使用"package:" + getPackageName()携带App的包名信息

使用Settings.canDrawOverlays方法判断授权结果

请求WRITE_SETTINGS

private static final int REQUEST_CODE_WRITE_SETTINGS = 2;

private void requestWriteSettings() {

Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);

intent.setData(Uri.parse("package:" + getPackageName()));

startActivityForResult(intent, REQUEST_CODE_WRITE_SETTINGS );

}

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if (requestCode == REQUEST_CODE_WRITE_SETTINGS) {

if (Settings.System.canWrite(this)) {

Log.i(LOGTAG, "onActivityResult write settings granted" );

}

}

}

上述代码需要注意的是

使用Action Settings.ACTION_MANAGE_WRITE_SETTINGS 启动隐式Intent

使用"package:" + getPackageName()携带App的包名信息

使用Settings.System.canWrite方法检测授权结果

注意:关于这两个特殊权限,一般不建议应用申请。

其实你不需要每个权限都去显式申请,举一个例子,如果你的应用授权了读取联系人的权限,那么你的应用也是被赋予了写入联系人的权限。因为读取联系人和写入联系人这两个权限都属于联系人权限分组,所以一旦组内某个权限被允许,该组的其他权限也是被允许的。

以上这篇Android 6.0权限请求相关及权限分组方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

android危险权限分组,Android 6.0权限请求相关及权限分组方法相关推荐

  1. Android 6.0权限请求相关及权限分组

    Android M(6.0)API 23后加入了权限请求设置,APP需要使用某些权限需要主动申请. 权限分为3类,一组是Normal权限,无需申请,另一组是Dangerous,需申请,然后是特殊权限, ...

  2. Android开发手电筒(支持6.0以上系统智能申请权限)

    手电筒小工具,在生活中的应用很广泛,目前的大部分手机都自带手电筒App.今天就和大家一起分享该功能的实现原理,下图分别是安卓Vivo4.0与华为7.0测试的效果图(gif最大不能超过5M,这里剪辑了) ...

  3. nuxt3.0学习-二、nuxt3.0的请求相关内容、状态管理(useState/Pinia)、cookie管理(useCookie)、token续期

    请求相关内容 nuxt3.0提供的多种数据访问 API 上一次是nuxt3.0的安装和约定式的使用 接下来就是使用请求调整,Nuxt3 中提供的多种数据访问 API: $fetch: 使用时机: 首屏 ...

  4. android 获取照片 权限管理,安卓6.0以上 相册读取图片 权限问题

    问题背景: 今天做Intent ACTION_PICK 相册读取, 已经在AndroidManifest中添加了权限, 然后选取后,图片无法显示. 原因是:android6.0之后不仅需要在Mainf ...

  5. [Android Studio]详细讲解Android6.0以上请求应用权限(解决请求权限窗口一闪而过的问题)

    现在的主流手机的Android版本都是8.0/9.0(笔者的华为手机为9.0),所以在开发Android的时候尽量使用Android8.0的版本(SDK 26).随着Android版本的提升,系统的安 ...

  6. android manifest 权限组,Android的单个或多个权限动态申请

    前言 在Android 6.0(API 级别 23)以下申请权限是非常简单的,直接在AndroidManifest.xml这个配置文件中加入申请权限的列表就可以了,比如我要申请四个权限,如下: 但是在 ...

  7. Android不使用支持库请求运行时权限

    Android 6.0后,用户开始在应用运行时向其授予权限,而不是在应用安装时授予.Android官网上也有相关教程:在运行时请求权限.但教程是使用支持库来举例的,用支持库的话,APK的大小也会变得很 ...

  8. android危险权限分组,Android 中的危险权限详细整理

    Android 中的危险权限详细整理 前言: Android 中有上百种权限,现在将所有的权限归为两类: 一类是普通权限 一类的危险权限 普通权限是指那些不会威胁到用户安全和隐私的权限,这部分权限系统 ...

  9. android 动态获取全县_android 6.0之后动态获取权限

    1. 概述 Android 6.0 (API 23) 之前应用的权限在安装时全部授予,运行时应用不再需要询问用户.在 Android 6.0 或更高版本对权限进行了分类,对某些涉及到用户隐私的权限可在 ...

最新文章

  1. 以Lazada为例,看电商系统架构演进
  2. 使用python 打造中国的电影光魔
  3. Intellij+maven:jar包冲突的解决方法(Hbase和Guava的冲突)
  4. Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置
  5. 个人JS体系整理(二)
  6. Notification的功能和用法 加薪通知
  7. js获取用户当前所在城市(ip)
  8. 《Python Cookbook 3rd》笔记(1.20):合并多个字典或映射
  9. ZZULIOJ 1108: 打印数字图形(函数专题)
  10. iOS -- 上传多张图片 后台(PHP)代码和上传一张的一样
  11. 基于javaweb+jsp的运动会体育比赛管理系统(带报告文档)
  12. 笔记本电脑开不了机怎么重装系统?小熊U盘重装win7系统教程
  13. Python 库学习 —— Excel存储(xlwt、xlrd)
  14. 黑苹果睡眠问题(仅适用自己的配置)
  15. Gtalent如何帮助HR招到薪酬专员,5条建议4点做法
  16. 最新微信hook3.0二次开发C#源码介绍
  17. 生活随记 - 申通快递鸡蛋全碎了
  18. 联想笔记本声音太小怎么办_笔记本声音太小,详细教您笔记本电脑声音太小解决方法...
  19. vue 修改模板{{}}标签_vue.js - Vue单文件的template标签
  20. 《指数基金投资指南》读书笔记---行业指数基金

热门文章

  1. IO流操作-图片操作(二)
  2. perl模块的安装,查询
  3. oracle远程连接配置
  4. ajax无刷新留言板远吗,php+ajax制作无刷新留言板,phpajax刷新留言板_PHP教程
  5. 关于求N个无序数中第K大的数。
  6. 用variance和bias解释其overfitting
  7. (转载)Nutch2 WebPage 字段解释
  8. 关于省客服集中全业务系统IT项目管理的几点分析!
  9. MacBook(m1)配置Python注意事项(自用,持续更新)
  10. 判断一棵二叉树是否为搜索二叉树、完全二叉树、平衡二叉树(java)