2016-12-10 252 views
0

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

这里是我的代码的简化:

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方法。

有没有人有如何处理这个想法?

+0

这是不明确你在哪里添加压制注释 – piotrpo

+0

对不起,我更新了方法调用的名称。现在应该更清楚了。 –

回答

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

将此项添加到您的AndroidManifest.xml文件中。

+0

感谢您的回答,但这不是我的清单中存在的权限问题:s –

0

我通过阅读检查权限的lint代码(Code)找到了解决我的问题的解决方法。解决方案是命名我的方法称为'isPermissionGranted':'检查*权限'。这不是我寻找的解决方案,但它的工作原理。如果有人有更好的方法来做到这一点,我仍然感兴趣。

这里是代码的有趣的部分:

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

你把抑制在错误的地方:

单语句抑制:

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

法范围内抑制:

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

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