【发布时间】:2021-07-01 12:23:25
【问题描述】:
我想在 react native 中实现获取当前位置。如果在调用地理定位 API 之前未在手机中激活位置但弹出未显示并且此 PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,{ title: 'Location Access Required', message: 'This App needs to Access your location'},); 在使用 PermissionAndroid 模块请求权限时始终返回“已授予”,我会授予激活位置的权限。
这是我的代码
import { PermissionsAndroid } from 'react-native';
import Geolocation from '@react-native-community/geolocation';
...
componentDidMount(){
const requestLocationPermission = async () => {
let geoOptions = {
enableHighAccuracy: true,
timeout:20000,
maximumAge: 60*60*24
}
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
{
title: 'Location Access Required',
message: 'This App needs to Access your location',
},
);
console.warn(granted);
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
Geolocation.getCurrentPosition(this.geoLocationSuccess,this.geoLocationFailure,geoOptions);
}
} catch (err) {
console.warn(err);
}
};
requestLocationPermission();
}
我的实现是错误的吗?因为我想在未启用位置服务时显示弹出窗口以让用户启用它
【问题讨论】:
-
所以你是说状态总是返回
granted,即使不是? -
是的。当我试图检查变量“granted”的值时,总是返回被授予并且不显示弹出让用户授予权限@Konstantin
-
您可以进入手机设置以确保此处未授予位置设置吗?因为如果它已经被授予,弹出窗口将不会出现。
-
这个模块不检查手机上的位置是否活跃?
-
是的,但是如果它已经被授予,那么它就不会显示弹出窗口,因为不需要那个
标签: react-native