我想启用设备的位置(Android Pie)。我已经阅读了react-native的权限文档,然后尝试实现它,但是每次它说“拒绝位置权限”。我什至尝试使用外部库(react-native-permissions),然后显示:-“不确定:尚未通过权限对话框提示用户”。我也已在清单中授予了权限(FINE_LOCATION和COARSE_LOCATION)。我什至尝试在应用程序权限中手动授予权限,但仍然显示权限被拒绝。我如何启用位置。
代码如下:
async requestLocationPermission() {
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
{
title: "Example App",
message: "Example App access to your location "
}
);
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
console.log("You can use the location");
alert("You can use the location");
} else {
console.log("location permission denied");
alert("Location permission denied");
}
} catch (err) {
console.warn(err);
}
}
在componentDidMount中调用它:
componentDidMount(){
this.requestLocationPermission();
}
答案 0 :(得分:0)
我也是这样做的。在AndroidManifest.xml文件中添加了FINE_LOCATION和COARSE_LOCATION。像你一样写上面的代码片段。
然后我打开AndroidStudio并清理并构建。 从模拟器中删除了该应用程序,然后重新运行它,react-native run-android 然后出现了位置权限对话框。
答案 1 :(得分:0)
我知道这听起来有点奇怪...
尝试打开Google地图。该对话框有时会出现。
从字面上看,这就是我的答案!
答案 2 :(得分:0)
您在使用模拟器时,与模拟它的iOS不同,定位服务在Android模拟器上根本无法工作。
安装“ react-native-device-info”并在使用位置服务之前检查其是否为Android模拟器
答案 3 :(得分:0)
应用权限方法后,如果您看到“位置权限被拒绝”之类的消息,或者您无法看到“权限”对话框。。然后重置您授予的权限。
1.如果您使用的是模拟器:为此,请在命令提示符中的当前项目目录路径中运行 cmd:运行:" adb shell pm reset-permissions "
2.如果您正在使用您的设备,则拒绝所有权限设置。
这将重置您所有给定的权限。之后,在我的情况下,我可以看到权限对话框,并且可以自行允许或拒绝权限。