programing

Android Studio-보안 예외 경고 제거

yoursource 2021. 1. 17. 12:27
반응형

Android Studio-보안 예외 경고 제거


사용자의 위치를 ​​확인하고 있습니다.

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"})

다음을 찾고 있습니다 (명확성을 높이기 위해 업데이트 됨).

@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"})시도하십시오 .


이 Lint 경고를 무시하려는 경우 다음 중 하나를 인라인으로 수행 할 수 있습니다.

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

또는 방법 수준에서 :

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

Android Studio 검사를 사용하여 @SuppressWarnings({"MissingPermission"})메서드 또는 클래스 를 생성 할 수 있습니다.

Android Studio 누락 권한 확인

참조 URL : https://stackoverflow.com/questions/35124794/android-studio-remove-security-exception-warning

반응형