【发布时间】:2019-03-21 18:37:21
【问题描述】:
所以我更改了地理位置,我现在使用 'react-native-geolocation-service' 的地理位置。所以我现在的问题是不确定我的 PermissionsAndroid 代码是否正确,因为没有显示位置对话框的权限。每次我按下“未授予位置权限”按钮时,console.log 中都会显示此按钮,因此这意味着未授予权限。正如我所说,没有显示权限对话框。
如果我的错误在哪里,我希望你们检查我的代码。 这些是我的代码:
hasLocationPermission = () => {
try{
const granted = PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
{
title: 'Location Permission',
message: 'You must to accept this to make it work.'
}
)
if(granted === PermissionsAndroid.RESULTS.GRANTED){
console.log('Location permission accepted.')
}else{
console.log("Location permission denied")
}
} catch (err) {
console.warn(err)
}
}
getUserLocationHandler = () => {
if(this.hasLocationPermission){
Geolocation.getCurrentPosition(
position => {
this.setState({
userLocation: {
latitude: position.coords.latitude,
longitude: position.coords.longitude,
latitudeDelta: 0.0622,
longitudeDelta: 0.0421,
},
});
},
err => console.log(err),
{
enableHighAccuracy: true,
timeout: 15000,
maximumAge: 10000
}
);
}
}
render() {
return (
<View style={styles.container}>
<FetchLocation onGetLocation={this.getUserLocationHandler}/>
<UsersMap userLocation={this.state.userLocation}/>
</View>
);
}
“FetchLocation”是按钮,“UsersMap”是地图。
如果你们知道如何像 Grab 应用一样在应用打开之前显示权限对话框,那就更好了。谢谢!
如果您想在我的代码或 build.gradles 中查看其他内容,请随时提问。谢谢!
【问题讨论】:
-
您是否在运行时请求过用户权限?
-
不。但我的 android manifest.xml 中有“access_fine_location”
-
当他们点击按钮导航到他们的位置时,权限就会显示出来。
-
Android 6 及以上版本需要明确请求运行时权限
标签: javascript android google-maps react-native permissions