一、如果在Activity中不执行
Activity中有
- requestPermissions()
- OnRequestPermissionsResult()
- checkSelfPermission()
这三个方法,不过我发现在OnRequestPermissionsResult中是空实现。
官方写了句/*nothing*/
要用23 版本以上的V4包。在23以下版本的V4包中并没有这几个方法。
- ActivityCompat.checkSelfPermission()
- ActivityCompat.requestPermissions()
- ActivityCompat.OnRequestPermissionsResultCallback
- ActivityCompat.shouldShowRequestPermissionRationale()
在拿回调的时候如果你的类继承了Activity
要实现ActivityCompat.OnRequestPermissionsResultCallback这个接口。
才能拿到回调,不知道是不是官方的坑。每个厂商的手机也都不一样。暂时先了解到这么多。
另外动态申请权限时一定要同时在清单文件中同时申请相应权限。动态申请了不代表清单文件可以不写。
二、如果在Fragment中不执行
在Fragment中申请运行时权限的时候是使用Fragment本身来进行申请
在Activity中使用的时候我们的代码如下:
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
1);
我们在Fragment中申请时不是使用AcyivityCompat而是使用Fragment本身,代码如下:
HomeFragment.this.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
1);