Android 6.0动态权限申请详解及处理技巧
24 浏览量
更新于2024-08-30
收藏 60KB PDF 举报
Android 6.0 权限申请详解及权限资料整理
在 Android 6.0 之后,部分权限需要动态申请,这意味着当用户打开应用程序时,系统不会自动申请应用程序所需的权限,而是需要用户在使用应用程序时主动申请。下面是权限申请的详细介绍。
一、权限申请的两步骤
权限申请的第一步是 requestPermissions 方法,它需要三个参数:Activity 对象、需要申请的权限数组和申请回调代码。例如:
```
public static void requestPermissions(final @NonNull Activity activity, final @NonNull String[] permissions, final int requestCode)
```
权限申请的第二步是处理申请回调结果,通过 onRequestPermissionsResult 方法可以获取申请结果。例如:
```
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
```
在 onRequestPermissionsResult 方法中,可以根据 grantResults 数组的值来判断权限申请的结果。如果 grantResults 数组中的值是 PackageManager.PERMISSION_GRANTED,那么权限申请成功;如果是 PackageManager.PERMISSION_DENIED,那么权限申请失败。
二、Fragment 中运行时权限的特殊处理
在 Fragment 中申请权限时,不要使用 ActivityCompat.requestPermissions 方法,而应该直接使用 Fragment 的 requestPermissions 方法。否则,申请回调结果将被传递到 Activity 的 onRequestPermissionsResult 方法中,而不是 Fragment 的 onRequestPermissionsResult 方法中。
如果在 Fragment 中嵌套了子 Fragment,並且在子 Fragment 中使用 requestPermissions 方法,那么申请回调结果将不会被传递回来。此时,可以使用 getParentFragment().requestPermissions 方法来将申请回调结果传递到父 Fragment 中。例如:
```
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
// 传递申请回调结果到子 Fragment 中
getParentFragment().onRequestPermissionsResult(requestCode, permissions, grantResults);
}
```
三、权限申请的注意事项
在申请权限时,需要注意以下几点:
* 权限申请需要在主线程中进行。
* 权限申请需要在 Activity 或 Fragment 中进行,不可以在其他线程中进行。
* 权限申请结果需要在 onRequestPermissionsResult 方法中处理。
四、常见权限列表
以下是 Android 中常见的一些权限:
* android.permission.INTERNET:访问互联网的权限。
* android.permission.READ_EXTERNAL_STORAGE:读取外部存储器的权限。
* android.permission.WRITE_EXTERNAL_STORAGE:写入外部存储器的权限。
* android.permission.CAMERA:访问摄像头的权限。
* android.permission.RECORD_AUDIO:访问麦克风的权限。
这些权限都是 Android 中最基本的权限,但是不同的应用程序可能需要申请不同的权限。开发者需要根据自己的应用程序的需求来申请相应的权限。
2017-06-19 上传
2018-10-31 上传
165 浏览量
2021-01-20 上传
2021-01-05 上传
2021-01-05 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
weixin_38552292
- 粉丝: 6
- 资源: 894
最新资源
- BookStores:ASP.NET Core Web API + EF Core后端入门模板
- advanced-analytics-with-spark:O O'Reilly出版的“ Advanced Spark with Spark”案例研究的非官方面向DataFrame的解决方案
- 非常好用的H5选人组件
- my-first-website
- apache2.2.zip
- Google-Chat-Extender:Google Chat Extender允许向Google Chat应用添加新主题和插件
- wImageReaderWebp
- step7实现PID.rar
- 跳转到app store的小案例.zipIOS应用例子源码下载
- mumuki-guia-python3-hola-python
- 编程乐趣:此存储库包含编程问题。
- TYPO3-version-chart:使用jQuery UI和jQuery Isotope的TYPO3版本可视化
- adtech-design-interview
- aabbtree-2.8.1-py2.py3-none-any.whl.zip
- weixin051畅阅读微信小程序+ssm后端毕业源码案例设计
- montana.github.io