В процессе отладки приложения React Native на физическом устройстве (Android), когда я проверяю разрешение на определение местоположения, оно всегда блокируется, даже если я предоставил разрешение в настройках. Я должен отметить, что раньше мне не удавалось запросить окно «запросить разрешение», поэтому я не мог заблокировать его каким-либо образом. Кроме того, я попытался удалить и снова установить приложение.
Вот код, в котором я проверяю разрешение на определение местоположения (я пробовал и другие). Здесь я использую react-native-permissions
, однако поведение будет таким же, если я использую PermissionsAndroid
из react-native
.
import {check, PERMISSIONS, request, RESULTS, openSettings} from "react-native-permissions";
async function checkPermissions() {
let response = await check(PERMISSIONS.ANDROID.ACCESS_FINE_LOCATION); // <-- always blocked
let isPermissionsGranted = false;
if (response === RESULTS.GRANTED) {
isPermissionsGranted = true;
} else if (response === RESULTS.DENIED) {
response = request(PERMISSIONS.ANDROID.ACCESS_FINE_LOCATION, {
title: "FreeLine requires permission",
message: "FreeLine needs access to your location so you can see your position",
buttonPositive: "Ok",
buttonNegative: "Don't show my position",
});
if (response === RESULTS.GRANTED) {
isPermissionsGranted = true;
} else if (response === RESULTS.DENIED) {
await openSettings();
}
}
return isPermissionsGranted;
}
Я не нашел никакой информации, которая бы это объясняла. Я думал, что, возможно, во время отладки я не могу запросить разрешение.