允许权限后设备无法获取位置-React Native-Android

时间:2018-08-08 13:25:17

标签: android react-native

我正在使用react本地应用程序,它完全取决于位置,因此我为它创建了以下代码,在大多数实际设备中,我无法获取位置,并且总是在出现错误时通过Alert框返回到允许的状态取消或重试

getLocation = () = {
    try {
        const granted = await PermissionsAndroid.request(
          PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
          {
            'title': 'Permission Title',
            'message': 'App ' +
              'Message'
          }
        )
        if (granted === PermissionsAndroid.RESULTS.GRANTED) {
            that = this;
            navigator.geolocation.getCurrentPosition(
                (position) => {
                    this.checkLogin(position);
                },
                (error) => {
                    Alert.alert(
                      'Location',
                      'We are not able to get your current location.',
                      [
                        {text: 'Cancel', onPress: () => BackHandler.exitApp(), style: 'cancel'},
                        {text: 'Try Again', onPress: () => this.getLocation()},
                      ],
                      { cancelable: false }
                    )
                },
                { enableHighAccuracy: false, timeout: 5000, maximumAge: 1000, distanceFilter: 1 }
            );
        } else {
          alert("Location permission denied")
        }
    }catch(err){
        alert(err)
    }
}

AndroidManifest.xml

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

是否有适用于所有设备的快速解决方案,或者如果我必须更新上述代码,请告诉我。

1 个答案:

答案 0 :(得分:0)

我建议this library对本机地理位置进行反应。这是一个可靠的插件,可以直接使用。您甚至不需要执行自己的权限实现。它为你做。我将它用于React Native内置的Android和iOS应用程序。它甚至可以配置为在后台运行!