所以我改变了地理位置,我现在从'react-native-geolocation-service'
开始使用地理位置。所以我现在的问题不确定我的权限Android代码是否正确,因为没有显示位置权限对话框。每次我按下"未授予位置权限"按钮时,控制台中都会显示.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中看到其他东西,请随时询问。谢谢!
您是否在AndroidManifest文件中添加了权限? 就像文档所说的那样。
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
要请求的用户定义文本 您添加的权限:
title: 'Location Permission',
message: 'You must to accept this to make it work.'
不会在第一次权限重审中显示。但是,如果用户单击"拒绝",而您再次请求应用中的权限,则会显示您的文本。
我也一直在努力,但文档描述了这种行为:
如果用户之前关闭了你提示输入的权限,OS 将建议你的应用显示需要该权限的理由。可选的理由参数将仅在必要时显示对话框提示 - 否则将显示正常权限提示。
因此,如果您不想向用户发出通知,您需要什么权限,那么您似乎需要在第一个权限请求之前使用警报。
如果有人有其他方法,我会很高兴听到。
检查您的应用程序是否已具有权限,如果授予权限,则不会显示任何弹出窗口