有没有一种方法可以访问手机信号塔的信息,而不必激活GPS?



我对Android开发很陌生,但我想知道是否有可能通过手机信号塔信息获得一般位置,而无需激活手机上的GPS。手机不应该在没有GPS的情况下接入手机信号塔吗?

我尝试使用TelephonyManager和方法allCellInfo(),但它需要良好的位置权限,这反过来意味着我必须激活GPS。然而,我认为在这种情况下,粗糙的位置许可应该是足够的,因为我只想访问蜂窝塔信息,而不是GPS。从allCellInfo()返回的列表总是空的,除非我激活GPS,这是有意义的,因为该方法需要精细的位置权限。我只是不明白为什么会出现这种情况,据我所知,粗略的位置许可应该足以获得蜂窝塔信息(和wifi)。

是否有其他方法/类/包/库可以帮助?有没有可能在不打开GPS的情况下获取手机信号塔的信息?也许是一些只使用粗定位许可的东西?

似乎你想要的是尝试找出位置,而不要求任何位置权限。不,Android不会让你这么做。或者至少,不是通过任何明显的信号塔信息(他们在粗略的位置确定中使用这些信息)。

如果您只是想避免使用GPS(例如出于电池原因),请请求粗略定位许可。这不会打开GPS,但会使用网络信息来获取位置。这将允许你自己跳过所有的信号强度数学(坦率地说,你不会做得像他们一样好,因为他们比你有更多关于网络位置的信息)。

您似乎正在从LocationManager中寻找NETWORK_PROVIDER。引用文档,"如果存在,该提供商根据附近的手机信号塔和WiFi接入点确定位置"。