Android Studio – 删除安全性exception警告

我正在获取用户的位置

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(),但不知道确切的string传入此。 @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"}) 

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

 @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); } } 

编辑:

正确的皮棉规则是MissingPermission ,但似乎有一个错误的地方给一些人。

所以,请尝试@SuppressWarnings({“ResourceType”})

如果你正在寻找忽略这个lint警告,你可以这样做内联:

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

或在方法级别:

 @SuppressWarnings({"MissingPermission"}) public void toggleGPS(boolean enableGPS) { ... } 

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

android studio缺少权限检查