我正在尝试在Android中获取相邻的单元格信息,但函数getNeighboringCellInfo()
始终返回null。
我使用了以下代码:
protected void getCellInfo() {
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
List<NeighboringCellInfo> neighborCells = telephonyManager.getNeighboringCellInfo();
if (neighborCells == null) {
OutUtils.debug("no neighbor cells");
} else {
...
}
}
context
变量来自Service类。
我的AndroidManifest.xml权限
<uses-permission android:name="android.permission.INTERNET"/>
<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.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我尝试使用和不启用Android中的“使用2G网络”选项。
有什么想法吗?感谢
答案 0 :(得分:4)
如果您可以运行logcat,请尝试运行 logcat -b radio 。如果幸运的话,RIL代码将吐出调试消息,显示调制解调器对相邻小区信息的实际请求。很可能调制解调器只是返回一个空列表。如果是这种情况,它与权限无关,并且您无法修复它。
答案 1 :(得分:1)
cellid实现因移动设备而异,因为这些功能被认为是可选的。例如:
三星(所有设备):getNeigbouringCells()根本不受支持,并且总是返回一个空列表。
答案 2 :(得分:0)
我想,也许你没有在Manifest中设置所有必要的权限。看这里Null Issue with NeighboringCellInfo, CID and LAC
如果您认为自己拥有它们,请将清单放在问题中。