Android 6.0 动态权限申请指南
154 浏览量
更新于2024-09-02
收藏 57KB PDF 举报
"Android 6.0权限申请详解及权限资料整理"
在Android 6.0(API级别23)及更高版本中,系统的权限管理系统发生了重大变化,引入了运行时权限的概念,以增强用户对应用权限的控制。在此之前,应用在安装时会一次性获取所有声明的权限。但在Android 6.0之后,对于某些敏感权限,应用需要在运行时根据用户的实际需求动态请求。
一、权限申请的两步骤
1. 权限申请:
在Android 6.0中,应用需要在使用特定功能时请求权限,而不是在安装时。这通常通过`ActivityCompat.requestPermissions()`方法来实现。以下是一个示例:
```java
// 参数1:当前活动
// 参数2:需要申请的权限数组
// 参数3:请求码,用于在回调中区分不同的权限请求
ActivityCompat.requestPermissions(activity, new String[]{permission.READ_CONTACTS}, REQUEST_CODE_READ_CONTACTS);
```
2. 申请回调处理:
当用户对权限请求做出响应后,系统会调用`onRequestPermissionsResult()`方法。在这个方法中,你可以检查用户是否授予了权限:
```java
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_READ_CONTACTS:
// 检查用户是否允许读取联系人
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 权限被授予,可以执行相应的操作
} else {
// 权限被拒绝,可能需要提示用户并处理无法进行的操作
}
break;
// 其他请求码的处理...
}
}
```
二、Fragment中运行时权限的特殊处理
在Fragment中处理权限与在Activity中略有不同。你应该直接在Fragment中使用`requestPermissions()`方法,而不是通过`ActivityCompat`。如果Fragment嵌套在另一个Fragment中,应使用`getParentFragment().requestPermissions()`来确保回调正确地传递到父Fragment。以下是一个示例:
```java
// 在子Fragment中请求权限
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults); // 传递给父Fragment
// 在这里处理子Fragment的权限回调
}
// 在父Fragment中处理权限回调
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
// 处理父Fragment自己的权限请求
// 同时处理来自子Fragment的回调
for (Fragment fragment : getFragmentManager().getFragments()) {
if (fragment != null) {
fragment.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
}
```
为了更好地理解和处理Android 6.0及更高版本的权限问题,开发者应该熟悉`Manifest`文件中的权限声明,了解哪些权限是危险权限(需要运行时请求)以及如何适当地处理权限拒绝的情况。同时,需要提供良好的用户体验,比如在请求权限时解释为何需要这些权限,并在权限被拒绝后提供再次请求的途径。这有助于提高用户对应用的信任度和满意度。
2017-06-19 上传
2018-10-31 上传
点击了解资源详情
2024-11-24 上传
2024-11-24 上传
2024-11-24 上传
2024-11-24 上传
NEDL003
- 粉丝: 160
- 资源: 978
最新资源
- 俄罗斯RTSD数据集实现交通标志实时检测
- 易语言开发的文件批量改名工具使用Ex_Dui美化界面
- 爱心援助动态网页教程:前端开发实战指南
- 复旦微电子数字电路课件4章同步时序电路详解
- Dylan Manley的编程投资组合登录页面设计介绍
- Python实现H3K4me3与H3K27ac表观遗传标记域长度分析
- 易语言开源播放器项目:简易界面与强大的音频支持
- 介绍rxtx2.2全系统环境下的Java版本使用
- ZStack-CC2530 半开源协议栈使用与安装指南
- 易语言实现的八斗平台与淘宝评论采集软件开发
- Christiano响应式网站项目设计与技术特点
- QT图形框架中QGraphicRectItem的插入与缩放技术
- 组合逻辑电路深入解析与习题教程
- Vue+ECharts实现中国地图3D展示与交互功能
- MiSTer_MAME_SCRIPTS:自动下载MAME与HBMAME脚本指南
- 前端技术精髓:构建响应式盆栽展示网站