56

我正在通过

Location location = LocationServices.FusedLocationApi.getLastLocation(
            mGoogleApiClient);

这行代码在一个方法中,在调用此方法之前,我会检查 Android 运行时权限。仅当用户可以使用该权限时,我才调用此方法。代码运行良好。

问题是 Android Studio 仍然在这一行显示一个错误,没有识别出我在调用这个函数之前已经检查过了。

Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with `checkPermission`) or explicitly handle a potential `SecurityException`

现在如何删除此警告?我已经检查了权限,不想再次检查只是为了删除这个警告。我试过添加 @SuppressWarnings() 但不知道传递给它的确切字符串。 @SuppressWarnings({"all"})有效,但显然不推荐。

如何删除此警告?

编辑 1:这是我的确切代码 -

private void checkPermissions() {
    if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION)
            == PackageManager.PERMISSION_GRANTED)
        getLocation();  //Method called if I have permission
}

private void getLocation() {
    //Android studio shows warning at this line.
    Location location = LocationServices.FusedLocationApi.getLastLocation(
            mGoogleApiClient);
}

但是,如果我将权限检查放在 getLocation() 方法中,那么警告就会消失。@SuppressWarnings({"MissingPermission"})不起作用。

编辑2:我发现抑制警告的唯一方法是 -

在该特定代码的顶部添加此注释 -

//noinspection ResourceType

或添加这个 -

@SuppressWarnings({"ResourceType"})
4

3 回答 3

124

您正在寻找(更新以提高清晰度):

@Override
@SuppressWarnings({"MissingPermission"})
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    if (LOCATION_REQUEST_CODE == requestCode) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

            lastLocation = LocationServices.FusedLocationApi.getLastLocation(googleApiClient);


       }
}

编辑:

正确的 lint 规则是MissingPermission,但似乎有一个错误将它放错了位置。

所以,也请尝试@SuppressWarnings({"ResourceType"})

于 2016-02-04T02:31:51.143 回答
5

如果您希望忽略此 lint 警告,您可以内联执行此操作:

//noinspection MissingPermission
Location lastLocation = FusedLocationApi.getLastLocation(locationClient);

或在方法级别:

@SuppressWarnings({"MissingPermission"})
public void toggleGPS(boolean enableGPS) {
  ...
}
于 2016-12-20T12:33:07.440 回答
1

您可以使用 Android Studio 检查为 @SuppressWarnings({"MissingPermission"})您的方法或类生成

android studio缺少权限检查

于 2017-09-21T13:28:56.943 回答