我正试图在反应原生的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" />
答案 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)。
一些有用的链接: