React Native: не удается получить доступ к местоположению с помощью geolocation API

Ошибка: похоже, что приложение не имеет разрешения на доступ к местоположению. Добавьте следующую строку в приложение AndroidManifest.xml
Несмотря на то, что я добавил разрешения в манифест.xml и запрашивать разрешения среды выполнения я не могу получить доступ к GPS.
Мой Андроидманифест.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" />
.....
.....
Полный код:
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>
);
}
}
2 ответов:
Я получил ту же проблему с
CameraRoll. Я исправил этот запрос разрешения при запуске приложения. Вы должны использовать это: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) } }
Comments