Android 6.0权限请求相关及权限分组
来源:互联网 发布:软件著作权范文 编辑:程序博客网 时间:2024/06/13 02:44
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);}@Overrideprotected 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 );}@Overrideprotected 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方法检测授权结果
其实你不需要每个权限都去显式申请,举一个例子,如果你的应用授权了读取联系人的权限,那么你的应用也是被赋予了写入联系人的权限。因为读取联系人和写入联系人这两个权限都属于联系人权限分组,所以一旦组内某个权限被允许,该组的其他权限也是被允许的。
1 0
- Android 6.0权限请求相关及权限分组
- android 6.0权限请求
- Android (6.0) M 请求权限
- Android 6.0应用权限请求
- Android 6.0 权限请求问题
- Android 6.0 动态请求权限
- 自定义android 6.0请求权限
- android 6.0 动态请求权限
- Android 权限,权限分组的一些问题
- Android请求root权限
- Android M权限请求
- Android多权限请求
- android权限请求
- android多权限请求
- Xamarin Android权限请求
- Android权限请求
- Android多权限请求
- Android 6.0权限管理,sdk>=23请求权限
- acm sdut 关于顺序表基础操作
- Servlet与GenericServlet和HttpServlet的关系
- 从源码解析Python的Flask框架中request对象的用法
- mac下nodejs 更新到最新版本的最新方法
- node.js入门基础-4
- Android 6.0权限请求相关及权限分组
- Qt数据实时绘制之双击放大单一通道
- Android Studio快捷键
- 安卓-控制控件的宽度占屏幕的一半且水平居中显示
- Python2编码问题
- tomcat 启动报错
- HighlightingSystem(边缘发光插件)的简单使用(一)
- java复习系列之对象和类
- UVa489 - Hangman Judge