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

  • 相关阅读:
    VSS部署手册
    正则表达式学习(二)
    完全卸载oracle11g步骤
    c#中 命令copy 已退出,返回值为1
    Windows 64位下装Oracle 11g,PLSQL Developer的配置问题,数据库处显示为空白的解决方案
    ora01033和ora12560错误的解决方案
    C#DLL加密保护
    ocslive.conf
    ASP.NET中文乱码问题的解决
    Creating a very simple autorestore USB stick clonezilla
  • 原文地址:https://www.cnblogs.com/hfultrastrong/p/12807599.html
Copyright © 2011-2022 走看看