В чем разница между 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.