安卓6.0在Fragment申请运行时权限
来源:互联网 发布:winrar mac 编辑:程序博客网 时间:2024/05/17 22:20
转自:http://blog.csdn.net/qfanmingyiq/article/details/52561658
今天在Fragment申请权限时代码如下:
public void getContacts(){ int flag = ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_CONTACTS); if (flag!= PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions(getActivity(),new String[]{Manifest.permission.READ_CONTACTS},1); } }
回调方法如下:
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { System.out.print(true); super.onRequestPermissionsResult(requestCode, permissions, grantResults); }
发现居然无回调。
解决方法:
Fragment中运行时权限的特殊处理
在Fragment中申请权限,不要使用ActivityCompat.requestPermissions
, 直接使用Fragment的requestPermissions
方法,否则会回调到Activity的 onRequestPermissionsResult
如果在Fragment中嵌套Fragment,在子Fragment中使用requestPermissions
方 法,onRequestPermissionsResult
不会回调回来,建议使用getParentFragment().requestPermissions
方法,这个方法会回调到父Fragment中的onRequestPermissionsResult
,加入以下代码可以把回调透传到子Fragment
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); List<Fragment> fragments = getChildFragmentManager().getFragments(); if (fragments != null) { for (Fragment fragment : fragments) { if (fragment != null) { fragment.onRequestPermissionsResult(requestCode,permissions,grantResults); } } } }
阅读全文
1 0
- 安卓6.0在Fragment申请运行时权限
- 安卓6.0新特性在Fragment申请运行时权限
- Android 6.0 运行时在Fragment中申请权限无法回调 问题
- 安卓学习笔记--- Android 6.0运行时权限的申请使用及EasyPermissions的使用
- 在Fragment中申请运行时权限onRequestPermissionsResult收不到数据
- 6.0+运行时权限申请
- 安卓权限申请
- 安卓申请权限
- Android 6.0在运行时申请权限解释与实例
- 在程序运行时申请权限
- 安卓6.0 WRITE_SETTINGS权限申请
- 安卓6.0权限申请步骤
- 安卓6.0+动态权限申请
- 安卓6.0权限申请封装
- 安卓6.0权限申请另一种实现
- 安卓6.0以后动态申请权限
- 安卓6.0动态申请权限
- 安卓6.0运行时权限解析
- 密码算法详解——AES(高级加密算法)
- 从教小感
- C++中extern关键字使用
- js只保留整数,取整,四舍五入等函数
- SqlServer datetime字段实现 on update CURRENT_TIMESTAMP
- 安卓6.0在Fragment申请运行时权限
- 53. Maximum Subarray
- [NLP论文阅读]A simple but tough-to-beat baseline for sentence embedding
- 如何将eclipse项目快速导入intellij idea中,并提交到码云
- log4j 日志信息的引入 — 解决项目运行过程中的日志信息
- 从零开始写javaweb框架笔记16-搭建轻量级JAVAWEB框架-加载Controller,初始化框架
- 基于Python语言使用RabbitMQ消息队列(二)
- javascript节点的操作 创建、添加、移除、移动、复制
- 上传appstore注意事项