如果将checkSelfPermission()提取到方法中,则仍会显示检查权限的警告

时间:2018-09-13 13:32:13

标签: android android-studio android-permissions

我明白了为什么Android Studio显示MissingPermission警告。

  

调用需要权限,该权限可能会被用户拒绝:代码应显式检查以查看权限是否可用(带有checkPermission)或显式处理潜在的SecurityException少...(⌘F1)

如果存在带有@RequiresPermission注释的方法,则需要检查权限。因此,为了避免警告,我需要这样做:

if (ActivityCompat.checkSelfPermission(this,
        Manifest.permission.PERMISSION) == PackageManager.PERMISSION_GRANTED) {
    methodThatNeedsAPermission();
}

现在,这是一个很长的条件检查代码。此外,我希望我的代码干净,我想提取检查以将业务逻辑和与UI / Context相关的Android代码分开,所以我想要:

public void startDoingSomething() {
    if (hasPermission()) {
        methodThatNeedsAPermission();
    }
}

...

public boolean hasPermission() {
    return ActivityCompat.checkSelfPermission(this,
        Manifest.permission.PERMISSION) == PackageManager.PERMISSION_GRANTED;
}

但是,Android Studio仍然显示警告。

当然,我可以使用@SuppressLint("MissingPermission")禁止显示警告,但为什么要这么做呢? 我正在检查权限。

是否有解决此问题的干净方法?我将添加到hasPermission()方法中的某种注释,以便Android Studio知道我正在检查权限?

1 个答案:

答案 0 :(得分:0)

我遇到这样的情况,解决方案是遵循这条路

文件>设置>编辑器>检查> Android单击向下指针
棉绒点击向下指示器>正确性点击向下指示器
然后在“消息”下向下滚动到“缺少权限”,取消选中该框
点击应用,然后确定

皮棉很棒,但并不总是正确的