Я создал простое приложение, в котором есть страница входа в систему, и когда пользователь нажимает кнопку входа, он переходит на другую страницу. Он прекрасно работает всякий раз, когда я запускаю свое приложение, используя реакционную версию run-android. Но приложение вылетает всякий раз, когда я запускаю файл .apk на более поздних версиях устройств Android (он прекрасно работает в Android 5 и 6).
package.json
{
"name": "awsUpload",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest"
},
"dependencies": {
"aws-sdk": "^2.395.0",
"link": "^0.1.5",
"react": "16.6.3",
"react-native": "^0.58.3",
"react-native-aws3": "0.0.8",
"react-native-device-info": "^0.26.2",
"react-native-file-upload": "^1.0.4",
"react-native-image-picker": "^0.28.0",
"react-native-material-dropdown": "^0.11.1",
"react-native-router-flux": "^4.0.6",
"uniqid": "^5.0.3"
},
"devDependencies": {
"babel-core": "7.0.0-bridge.0",
"babel-jest": "24.0.0",
"jest": "24.0.0",
"metro-react-native-babel-preset": "0.51.1",
"react-test-renderer": "16.6.3"
},
"jest": {
"preset": "react-native"
}
}
Я использую приведенный ниже код для получения геолокации. Как я знаю, уже существует проблема, чтобы получить геолокации в более высокой версии устройства Android из-за защиты, и есть решение в переполнении стека. Но я не понял, как его использовать.
Мой код,
import React, {Component} from 'react';
import {Text, View} from 'react-native';
export default class App extends Component<Props> {
constructor(props) {
super(props);
this.state = {
currentLongitude: 'unknown',//Initial Longitude
currentLatitude: 'unknown',//Initial Latitude
}
}
componentDidMount = () => {
navigator.geolocation.getCurrentPosition(
//Will give you the current location
(position) => {
const currentLongitude = JSON.stringify(position.coords.longitude);
//getting the Longitude from the location json
const currentLatitude = JSON.stringify(position.coords.latitude);
//getting the Latitude from the location json
this.setState({ currentLongitude:currentLongitude });
//Setting state Longitude to re re-render the Longitude Text
this.setState({ currentLatitude:currentLatitude });
//Setting state Latitude to re re-render the Longitude Text
},
(error) => alert(error.message),
{ enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 }
);
this.watchID = navigator.geolocation.watchPosition((position) => {
//Will give you the location on location change
console.log(position);
const currentLongitude = JSON.stringify(position.coords.longitude);
//getting the Longitude from the location json
const currentLatitude = JSON.stringify(position.coords.latitude);
//getting the Latitude from the location json
this.setState({ currentLongitude:currentLongitude });
//Setting state Longitude to re re-render the Longitude Text
this.setState({ currentLatitude:currentLatitude });
//Setting state Latitude to re re-render the Longitude Text
});
}
componentWillUnmount = () => {
navigator.geolocation.clearWatch(this.watchID);
}
render() {
return (
<View>
<Text>Longitude: {this.state.currentLongitude}</Text>
<Text>Latitude: {this.state.currentLatitude}</Text>
{this.state.error ? <Text>Error: {this.state.error}</Text> : null}
</View>
);
}
}
Ссылка на решение есть,
https://stackoverflow.com/questions/33865445/gps-location-provider-requires-access-fine-location-permission-for-android-6-0/33866959