checkSelfPermission检查权限是否授予

ContextCompat.checkSelfPermission()

Determine whether <em>you</em> have been granted a particular permission.
确定是否你授予了指定的权限

DelegatingContext类 源码解析
public int checkPermission(@NonNull String permission, int pid, int uid) {
Checks.checkArgument(!TextUtils.isEmpty(permission), "permission cannot be null or empty");
return this.mRevokedPermissions.contains(permission)?-1:0;
}
private Set<String> mRevokedPermissions = new HashSet();

mRevokedPermissions 这个单词翻译过来就是取消的权限,可以引申为没授权的权限,HashSet保证每个权限在Set中都是唯一的,没有重复的权限

this.mRevokedPermissions.contains(permission)?-1:0这句话意思就是未授权的权限中是否包含permission权限?如果包含那么说明permission也是未授权所以返回值就是-1,否则的话就是说明该权限已经授权,返回值为0

我们经常使用ContextCompat.checkSelfPermission()PackageManager.PERMISSION_GRANTED进行比较,打开源码发现
public static final int PERMISSION_GRANTED = 0;
这一点正好印证了0是表示授权的

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容