没有位置提供者可用,React Native中的权限被拒绝

Tan*_*ker 5 reactjs react-native

我有一个需要用户允许该位置的应用程序。我正在测试应用程序的设备对此没有任何问题。但是,每当我使用其他设备时,都会显示以下错误:

在此处输入图片说明

这是我的代码:

 componentDidMount() {
    navigator.geolocation.getCurrentPosition((position) => {
      let lat = parseFloat(position.coords.latitude)
      let long = parseFloat(position.coords.longitude)
      
      let initialRegion = {
        latitude: lat,
        longitude: long,
        latitudeDelta: LATITUDE_DELTA,
        longitudeDelta: LONGITUDE_DELTA
      }

      this.setState({ initialPosition: initialRegion })
      this.setState({ markerPosition: initialRegion })
    },
      (error) => alert(JSON.stringify(error)),
      { enableHighAccuracy: true, timeout: 2000, maximumAge: 3600000 }
    )
  }
Run Code Online (Sandbox Code Playgroud)

我试过了 { enableHighAccuracy: false, timeout: 2000 },但是显示了同样的错误。

And*_*rew 6

根据您提供的代码,您尚未显示您正在请求访问权限的授权。

navigator.geolocation.requestAuthorization();在开始请求位置之前,您应该先打电话。

您还应确保已在AndroidManifest.xml和中设置了所需的权限Info.plist

您可以在这里查看文档https://facebook.github.io/react-native/docs/geolocation

Android API> = 23需要额外的步骤来检查并使用PermissionsAndroid API请求ACCESS_FINE_LOCATION权限 。否则可能会导致严重的崩溃。

你可以做这样的事情。

import { PermissionsAndroid } from 'react-native';

async function requestLocationPermission() {
  try {
    const granted = await PermissionsAndroid.request(
      PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
      {
        'title': 'Location Permission',
        'message': 'This App needs access to your location ' +
                   'so we can know where you are.'
      }
    )
    if (granted === PermissionsAndroid.RESULTS.GRANTED) {
      console.log("You can use locations ")
    } else {
      console.log("Location permission denied")
    }
  } catch (err) {
    console.warn(err)
  }
}
Run Code Online (Sandbox Code Playgroud)