Android:抑制方法调用上的警告

时间:2016-12-10 11:16:49

标签: java android permissions lint suppress-warnings

我试图做一个检查Android权限的方法。但是当我打电话给它时,我有一个Missing Permission警告。

以下是我的代码的简化:

public void lintTestMethod(){
    if(isPermissionGranted()) {
        requiresLocationPermission();
    }
}

public boolean isPermissionGranted(){
    return true;
}

@RequiresPermission(anyOf = {Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION})
public void requiresLocationPermission(){

}

我尝试添加:

@SuppressLint("MissingPermission")
public boolean isPermissionGranted(){
    return true;
}

但它不起作用(我也尝试过使用SuppressWarning)。

理想情况下,我不想修改lintTestMethod方法。

有没有人知道如何处理?

3 个答案:

答案 0 :(得分:1)

我通过阅读检查权限的{lint代码(Code)找到了解决问题的方法。解决方案是命名我的方法名为'isPermissionGranted':'check * Permission'。这不是我正在寻找的解决方案,但它确实有效。如果有人有更好的方法,我仍然感兴趣。

以下是代码的有趣部分:

String name = node.astName().astValue();
if ((name.startsWith("check") || name.startsWith("enforce")) && name.endsWith("Permission")) {
      mChecksPermission = true;
      mDone = true;
}

答案 1 :(得分:1)

你把抑制放在错误的地方:

单一语句抑制:

public void lintTestMethod(){
        if(isPermissionGranted()) {
            //noinspection MissingPermission
            requiresLocationPermission();
        }
    }

方法范围抑制:

@SuppressWarnings("MissingPermission")
public void lintTestMethod(){
    if(isPermissionGranted()) {
        requiresLocationPermission();
    }
}

可以使用Android Studio快速修复菜单完成。

答案 2 :(得分:0)

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

在AndroidManifest.xml文件中添加此内容。