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是表示授权的