zoukankan      html  css  js  c++  java
  • 安卓6.0新特性在Fragment申请运行时权限

    安卓6.0新特性在Fragment申请运行时权限

    今天在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);
    }
    }
    }
    }
    ————————————————
    版权声明:本文为CSDN博主「安儿IT」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qfanmingyiq/java/article/details/52561658

  • 相关阅读:
    ReadOnly TextEdit输入问题
    关于正太分布单侧区间上下限的定义
    关于Devexpress richEditControl
    CentOS7 升级 cmake
    极客时间实战目录
    kafka安装
    查找连续相同值的算法,并给出连续相同值的个数以及位置
    解决若依linux启动ERROR
    supervisor配置进程
    python做上位机
  • 原文地址:https://www.cnblogs.com/hfultrastrong/p/12807599.html
Copyright © 2011-2022 走看看