web-dev-qa-db-fra.com

React Native: impossible d'accéder à l'emplacement à l'aide de l'API de géolocalisation

 Not actual screenshot of the code. But error is same Erreur: On dirait que l'application n'a pas la permission d'accéder à l'emplacement. Ajoutez la ligne suivante au fichier AndroidManifest.xml de votre application

Même si j'ai ajouté les autorisations dans le fichier manifest.xml et demandé des autorisations d'exécution, je ne peux pas accéder au GPS.

Mon AndroidManifest.xml

<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.location">

<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />
<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION" />
.....
.....

code complet:

import React, { Component } from 'react';
import { Platform, StyleSheet, Text, View,
 PermissionsAndroid } from 'react-native';

export default class App extends Component {
  async requestLocationPermission() {
    try {
      const granted = await PermissionsAndroid.request(
        PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
        {
          'title': 'Location Access Permission',
          'message': 'Expensify would like to use your location ' +
                     'so you we track you.'
        }
      )
      if (granted === PermissionsAndroid.RESULTS.GRANTED) {
        console.log("You can use the location")
      } else {
        console.log("Location permission denied")
      }
    } catch (err) {
      console.warn(err)
    }
  }
  componentDidMount() {
    console.log("compdidmount");
    this.requestLocationPermission();
//Crashes here on getCurrentPosition
        navigator.geolocation.getCurrentPosition(
          (position) => {
            console.log(position.coords.latitude);
           },
           (error) => {
            console.log(error)
          },
          {enableHighAccuracy: true, timeout: 20000, maximumAge: 10000}
        );
    }
      render() {
        return (
          <View style>
            <Text style>
              Tracking App
            </Text>
          </View>
        );
      }
    }
6
Ameer Hamza

J'ai résolu ce problème en en supprimant et en réinstallant l'application.

0
Ameer Hamza

J'ai eu le même problème avec le CameraRoll. J'ai corrigé cette demande d'autorisation au démarrage de l'application. Vous devriez utiliser ceci: 

import { PermissionsAndroid } from 'react-native';

async function requestCameraPermission() {
  try {
    const granted = await PermissionsAndroid.request(
      PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
      {
        'title': 'Location Permission',
        'message': 'Location Permission' +
                   'so you can use GPS location.'
      }
    )
    if (granted === PermissionsAndroid.RESULTS.GRANTED) {
      console.log("You can use GPS")
    } else {
      console.log("GPS location denied")
    }
  } catch (err) {
    console.warn(err)
  }
}
0
oma