Похоже, приложение не имеет разрешения для доступа к местоположению в реагировать родной - PullRequest
0 голосов
/ 11 января 2019

Я создаю приложение, которое получает доступ к местоположению пользователя с помощью gps. Вот почему я добавил следующие строки в AndroidManifest.xml

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

И ниже моя функция, которая выбирает местоположение пользователя

componentWillMount(){
    navigator.geolocation.getCurrentPosition(
      position => {

        this.setState({
          latitude: position.coords.latitude,
          longitude: position.coords.longitude,

        });
      },
      error => Alert.alert(error.message),
      { enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 }
    );

  }

Но это приводит к ошибке, что у приложения нет разрешения на доступ к местоположению, и мне нужно объявить

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

в файле манифеста. Я пробовал много способов и нашел решение, то есть запрос разрешения во время выполнения. Поэтому я также добавил следующие строки в свой код

try {
      const granted =  PermissionsAndroid.request(
        PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
        {
          'title': 'Location Permission',
          'message': 'This app needs access to your location',
        }
      )
      if (granted === PermissionsAndroid.RESULTS.GRANTED) {
        console.log("You can use the location")
      } else {
        console.log("Location permission denied")
      }
    } catch (err) {
      console.warn(err)
}

Но проблема не уходит. Что мне делать?

1 Ответ

0 голосов
/ 11 января 2019

если вы не используете Promise, вам следует использовать async-await. в вашем коде его нет. и после получения разрешения вы можете получить местоположение

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)
  }
}

 async componentDidMount() {
   await requestLocationPermission()
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...