Ошибка разрешения ложного положительного пуха даже после запроса разрешения во время выполнения

Я испытываю трудности с пониманием подхода разрешения времени выполнения, используемого Android. Для тех, кто читает это, я не спрашиваю здесь "как вызвать разрешение во время выполнения" .. Я могу показать диалоговое окно разрешения, если оно еще не было предоставлено, и даже получить его результат в onRequestPermissionsResult () во фрагменте.

с этим кодом

 if (ContextCompat.checkSelfPermission(mActivity, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        FragmentCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, RQ_GET_LOCATION);
        Log.e("permission", "asking permission");
        return;
    }
   Log.e("permission", "permission already granted");
   accessLocation();

Получение результата вonRequestPermissionsResult

 @Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
{
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    switch (requestCode) {
        case RQ_GET_LOCATION:
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Log.e("permission", "onRequestPermissionsResult : permission granted, access location here");
                accessLocation();
            }
            else {
                Log.e("permission", "onRequestPermissionsResult : permission denied");
            }
            break;
    }
}

код внутриaccessLocation() является

 private void accessLocation()
{
    Log.e("permission", "accessing location permission");
    Location mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
    if (mLastLocation != null) {
        userDetail.setLat(String.valueOf(mLastLocation.getLatitude()));
        userDetail.setLat(String.valueOf(mLastLocation.getLongitude()));
    }
    else {
        if (!isLocationEnabled()) {
            mShowAlert();
        }
    }
}

Все идет нормально.. но меня беспокоит то, что внутри моегоaccessLocation() метод я получаю ложноположительную ошибку на линии

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

это говорит

Для вызова требуется разрешение, которое может быть отклонено пользователем: код должен явно проверять наличие разрешения (с помощьюcheckPermission) или явно обрабатывать потенциалSecurityException

Я знаю, что это происходит, когда вы не проверяете разрешение. Эта ошибка возникает, как только я аннотирую метод@SuppressWarnings("MissingPermission")

я не знаю, как разработчики на самом деле обрабатывают такие ошибки, когда им приходится вызывать метод несколько раз в своем классе. либо я должен использовать@SuppressWarnings("MissingPermission") или же ? (я не знаю)

Предположим, я запрашиваю разрешение, как я делаю в первом блоке кода выше> всплывающее диалоговое окно разрешений> пользователь предоставляет разрешение> поток переходит кonRequestPermissionsResult и снова я пишу код для доступа к местоположению, но это также покажет мне ложно-положительную ошибку за отсутствие проверки разрешения ..

или я делаю что-то ужасное, или я думаю, что я неправильно понял модель разрешений, или есть какая-то ошибка с lint (я ДЕЙСТВИТЕЛЬНО не думаю, что это проблема) ..

Я уже посмотрел вэтот вопрос а такжеэта студийная ошибка но я не удовлетворен ответами там.

ПОЖАЛУЙСТА, СКАЖИ МНЕ, ЧТО Я ДЕЛАЮ НЕПРАВИЛЬНО

Ответы на вопрос(1)

Ваш ответ на вопрос