检查方法中的Android权限

检查方法中的Android权限,android,annotations,coding-style,lint,error-suppression,Android,Annotations,Coding Style,Lint,Error Suppression,这是我的代码,它工作得非常好 但是我不喜欢每次检查都有这么大的代码,我想把它委托给我的实用程序类中的一个方法 if (Utils.hasMapLocationPermissions(getActivity())) { mMap.setMyLocationEnabled(true); } 但是setMyLocationEnabled有注释@requirePermission,因此我不能将其委托给方法,因为lint和编辑器将其显示为错误 在我的实用方法和抑制lint上是否有一些注释 像这样

这是我的代码,它工作得非常好

但是我不喜欢每次检查都有这么大的代码,我想把它委托给我的实用程序类中的一个方法

if (Utils.hasMapLocationPermissions(getActivity())) {
    mMap.setMyLocationEnabled(true);
}
但是
setMyLocationEnabled
有注释
@requirePermission
,因此我不能将其委托给方法,因为lint编辑器将其显示为错误

在我的实用方法和抑制lint上是否有一些注释

像这样的

@ChecksPermission
public boolean hasMapLocationPermissions(Activity activity) {
  return // my checking logic..
}

通过使用
@SuppressWarnings(“MissingPermission”)
注释方法,可以在编辑器和lint报告中抑制此错误,也可以通过将
//noinspection MissingPermission
放在该行上方,仅对一条语句抑制此错误

例如:

@SuppressWarnings("MissingPermission")
public boolean hasMapLocationPermissions(Activity activity) {
  // your checking logic
}
public static boolean checkLocationPermission(Context context) {
    return ActivityCompat.checkSelfPermission(context,
            Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
            && ActivityCompat.checkSelfPermission(context,
            Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED;
}
或:


您可以将方法重命名为
checkLocationPermission(活动)
。我发现,要传递Lint警告,方法的名称必须以“check”开头,以“Permission”结尾

例如:

@SuppressWarnings("MissingPermission")
public boolean hasMapLocationPermissions(Activity activity) {
  // your checking logic
}
public static boolean checkLocationPermission(Context context) {
    return ActivityCompat.checkSelfPermission(context,
            Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
            && ActivityCompat.checkSelfPermission(context,
            Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED;
}

尝试将
setMyLocationEnabled
放入
Try catch
中并处理
SecurityException
。应该在没有注释的情况下工作。代码仍然很大,看起来很难看。我想用简洁的小代码解决。好的答案,会等几天,如果这是最好的答案,我会给你赏金。谢谢,回答得很好!我就知道有这样的事。非常感谢。现在我的代码看起来很棒,而且也没有lint警告。哈哈,用这种方式破解lint对我来说真的很好,只有
checkPermission()
方法名起作用。