21

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

if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED || ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
    mMap.setMyLocationEnabled(true);
}

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

if (Utils.hasMapLocationPermissions(getActivity())) {
    mMap.setMyLocationEnabled(true);
}

但是setMyLocationEnabled有注释@RequiresPermission因此我不能将它委托给一个方法,因为lint编辑器将它显示为一个错误

是否有一些注释要写在我的实用程序方法上并抑制 lint?

像这样的东西

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

2 回答 2

58

您可以重命名您的方法,例如checkLocationPermission(Activity activity). 我发现您的方法名称必须以“check”开头并以“Permission”结尾才能通过 Lint 警告。

例如:

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;
}
于 2016-03-24T04:29:46.487 回答
14

您可以在编辑器和 lint 报告中通过使用 注释您的方法来抑制此错误,或者您可以通过在该行上方@SuppressWarnings("MissingPermission")放置单个语句来抑制错误。//noinspection MissingPermission

例如:

@SuppressWarnings("MissingPermission")
public boolean hasMapLocationPermissions(Activity activity) {
  // your checking logic
}

或者:

if (Utils.hasMapLocationPermissions(getActivity())) {
    //noinspection MissingPermission
    mMap.setMyLocationEnabled(true);
}
于 2016-03-18T15:35:16.647 回答