为什么地理位置无法在带有React Native的Android模拟器上运行?

时间:2019-02-05 10:01:26

标签: android react-native geolocation

我正在尝试使用React Native在Android中获取当前用户位置。我在App.js文件中编写了以下代码段:

import React, { Component } from "react";
import {
  Platform,
  StyleSheet,
  Text,
  View,
  Alert,
  TouchableOpacity
} from "react-native";

export default class App extends Component {
  state = {
    location: null
  };

  findCoordinates = () => {
    navigator.geolocation.getCurrentPosition(
      position => {
        const location = JSON.stringify(position);

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

    alert("SKIPPED");
  };

  render() {
    return (
      <View style={styles.container}>
        <TouchableOpacity onPress={this.findCoordinates}>
          <Text style={styles.welcome}>Find My Coords?</Text>
          <Text>Location: {this.state.location}</Text>
        </TouchableOpacity>
      </View>
    );
  }
}


const styles = StyleSheet.create({
  ... some style ...
});

自从我使用Android模拟器以来,我还在AndroidManifest.xml标签上方android\app\src\main的{​​{1}}文件中添加了以下行:

application

当我运行它时,没有出现共享GPS位置的请求,而且<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 函数似乎只是被跳过了。状态未更新,不显示任何错误,并且显示警报“ SKIPPED”。

这是我取消“跳过”警报后在屏幕上看到的内容:

enter image description here

我在这里想念什么?

2 个答案:

答案 0 :(得分:0)

IOS

如果您使用的是iOS版Simulator,请转到Simulator的菜单栏,然后​​选择“调试‣位置‣自定义位置”。输入经度和纬度坐标。

Android

如果使用的是Android虚拟设备,请在仿真器的工具栏上单击代表扩展控件的三个点。在“位置”部分中,输入经度和纬度。

答案 1 :(得分:0)

显然,我必须重新启动模拟器,然后它才能开始正常工作。找到了提示here