В чем разница между shouldShowRequestPermissionRationale и requestPermissions?

Я создаю приложение, которое требует местоположения пользователя. Я слежу за учебной документацией по Android отВот который говорит:

shouldShowRequestPermissionRationale вернуть логическое значение, указывающее, следует ли отображать пользовательский интерфейс с обоснованием для запроса разрешения (опасное разрешение, ACCESS_FINE_LOCATION)

Теперь в этом коде (взят из самой документации):

if (ContextCompat.checkSelfPermission(thisActivity,
                Manifest.permission.READ_CONTACTS)
        != PackageManager.PERMISSION_GRANTED) {

    // Should we show an explanation?
    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
            Manifest.permission.READ_CONTACTS)) {

        // Show an explanation to the user *asynchronously* -- don't block
        // this thread waiting for the user's response! After the user
        // sees the explanation, try again to request the permission.

    } else {

        // No explanation needed, we can request the permission.

        ActivityCompat.requestPermissions(thisActivity,
                new String[]{Manifest.permission.READ_CONTACTS},
                MY_PERMISSIONS_REQUEST_READ_CONTACTS);

        // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
        // app-defined int constant. The callback method gets the
        // result of the request.
    }
}

[МОЙ СОМНЕНИЕ] Не должна ли эта часть кода (ниже)

ActivityCompat.requestPermissions(thisActivity,
                new String[]{Manifest.permission.READ_CONTACTS},
                MY_PERMISSIONS_REQUEST_READ_CONTACTS);

быть внутри условия «если» здесь ..

 if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
            Manifest.permission.READ_CONTACTS)) {
    //HERE .....

}

Я имею в виду, если

ActivityCompat.shouldShowRequestPermissionRationale(thisActivity, Manifest.permission.READ_CONTACTS)   

верно, то нам нужно показать пользовательский интерфейс, и мы будем показывать пользовательский интерфейс

ActivityCompat.requestPermissions(thisActivity,
    newString[{Manifest.permission.READ_CONTACTS}, MY_PERMISSIONS_REQUEST_READ_CONTACTS);

Пожалуйста, объясните, где я ошибаюсь. Я застрял здесь. Заранее спасибо. Пример будет высоко ценится.

Примечание. Конечно, я запускаю свое приложение на Android M, и моя цель sdk> = 23.

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

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