代码之家  ›  专栏  ›  技术社区  ›  Ioane Sharvadze

在方法中检查Android权限

  •  24
  • Ioane Sharvadze  · 技术社区  · 9 年前

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

    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?

    像这样的东西

    @ChecksPermission
    public boolean hasMapLocationPermissions(Activity activity) {
      return // my checking logic..
    }
    
    2 回复  |  直到 9 年前
        1
  •  63
  •   tjeubaoit    3 年前

    您可以重命名方法,例如 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;
    }
    
        2
  •  16
  •   Bryan Herbst acclux    9 年前

    您可以通过在编辑器和lint报告中使用 @SuppressWarnings("MissingPermission") ,或者您可以通过将 //noinspection MissingPermission 高于该线。

    例如:

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

    或者:

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