我的 Android 版本是 4.2.1,我正在尝试使用TelephonyManager.getAllCellInfo()
方法。在我的清单文件中我有ACCESS_COARSE_UPDATES
, ACCESS_COARSE_LOCATION
, ACCESS_FINE_LOCATION
权限。然而该方法返回null
.
From TelephonyManager.getAllCellInfo() http://developer.android.com/reference/android/telephony/TelephonyManager.html#getAllCellInfo%28%29javadoc:
这优于使用 getCellLocation,尽管对于较旧的设备,这可能会返回 null,在这种情况下应调用 getCellLocation。
一些来源 http://s4gru.com/index.php?/topic/1612-problems-programming-android-signal-strength-reporting-for-lte/?p=93644报告称该方法仅在CDMA/LTE设备上实现,其他类型的设备(包括GSM/LTE设备)将返回null。在实施时,它将仅返回 LTE 小区。
TelephonyManager.getCellLocation()
将仅返回 GSM/UMTS 或 CDMA 小区。它仅限于一个小区,即设备当前注册的小区。如果您确定您的代码仅在 GSM/UMTS 或 CDMA 设备上运行,并且您只对设备当前注册的小区感兴趣,那么这是您最安全的选择。
要获取有关其他周围细胞的信息,请使用TelephonyManager.getNeighboringCellInfo()
。然而,它仅限于 GSM/UMTS 小区。此外,其实现取决于无线电固件。大多数三星设备(以及相当多的其他设备)将返回一个空列表。
结论:目前在 Android 上获取附近小区的信息是一件相当混乱的事情。您可能需要结合使用所有三种方法来获取所需的信息,即使这样,某些内容也可能无法访问。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)