React-native:-位置权限对话框不起作用

时间:2018-12-12 14:02:47

标签: react-native permissions geolocation android-permissions

我想启用设备的位置(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();
}

4 个答案:

答案 0 :(得分:0)

我也是这样做的。在AndroidManifest.xml文件中添加了FINE_LOCATION和COARSE_LOCATION。像你一样写上面的代码片段。

然后我也收到了位置许可被拒绝消息。

然后我打开AndroidStudio并清理并构建。 从模拟器中删除了该应用程序,然后重新运行它,react-native run-android 然后出现了位置权限对话框。

答案 1 :(得分:0)

我知道这听起来有点奇怪...

尝试打开Goog​​le地图。该对话框有时会出现。

从字面上看,这就是我的答案!

答案 2 :(得分:0)

您在使用模拟器时,与模拟它的iOS不同,定位服务在Android模拟器上根本无法工作。

安装“ react-native-device-info”并在使用位置服务之前检查其是否为Android模拟器

答案 3 :(得分:0)

应用权限方法后,如果您看到“位置权限被拒绝”之类的消息,或者您无法看到“权限”对话框。。然后重置您授予的权限。

1.如果您使用的是模拟器:为此,请在命令提示符中的当前项目目录路径中运行 cmd:运行:" adb shell pm reset-permissions "

2.如果您正在使用您的设备,则拒绝所有权限设置。

这将重置您所有给定的权限。之后,在我的情况下,我可以看到权限对话框,并且可以自行允许或拒绝权限。