本机无法从蜂窝网络中找到位置

时间:2018-04-16 11:57:46

标签: android react-native android-gps

我正试图在反应原生的Android设备(Android 7.0)上获得经纬度的用户位置。当我打开gps它找到位置没有问题,但如果我想从wifi或地窖网络获取位置并且gps关闭它给我错误“没有位置提供商可用”。

我在我的Android清单中拥有此权限,并在app中动态检查它们:

<property>
    <name>yarn.nodemanager.resource.cpu-vcores</name>
    <value>3</value>
</property>

从我的理解enableHighAccuracy:true给我gps的位置和enableHighAccuracy:false应该从wifi或地窖网络给我位置,但第二个不接缝工作。

这是我的代码:

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

1 个答案:

答案 0 :(得分:1)

根据谷歌Android支持,

  

如果关闭设备的位置信息,则任何应用都无法使用您的设备   设备位置

因此,应启用位置服务以确定设备位置。

关于使用enableHighAccuracy: true or false

再次来自谷歌Android支持,

位置服务有三种模式,其中任何一种都可以由设备所有者选择。

  

高精度此模式使用GPS,Wi-Fi,移动网络和传感器来获得最高精度的位置。它使用谷歌   位置服务可帮助您更快地估算设备的位置   更准确。

     

省电此模式使用耗电量较少的电源,如Wi-Fi和移动网络。它使用Google的位置服务来提供帮助   更快,更准确地估算您设备的位置。

     

仅限设备此模式仅使用GPS。它不使用Google的位置服务来提供位置信息。它可以估计   您的设备位置较慢且使用更多电池。

以上模式是在Android API 23中添加的(最有可能)因此在API&lt; = 21上,您的enableHighAccuracy属性应该决定使用的位置服务模式的类型。在API&gt; = 23时,用户选择的模式将决定您获得的准确度。

在iOS上,行为也是相同的,除非用户没有明确的Android模式选项。

TL,DR:无论您使用Wifi,网络还是GPS系统,都应启用位置服务以确定当前位置(iOS或Android)。

一些有用的链接:

https://support.google.com/accounts/answer/3467281?hl=en

https://github.com/expo/expo/issues/1339