我阅读了所有关于 getAllCellInfo() 的帖子,并且有类似的情况。下面发布的代码在 Android 6(OnePlus One)上运行良好,但在 Google Nexus 5x Android 8.1 API 27 上返回了一个空的 Cellinfo 列表。我已经在清单中设置了 Permission ACCESS CORSE LOCATION 并在第一次运行应用程序时请求权限.
这是一个代码片段:
try {
TelephonyManager tm = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
String networkOperator = "";
if (tm.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM) {
networkOperator = tm.getNetworkOperator();
}
if (!TextUtils.isEmpty(networkOperator)) { //is not empty with Nexus 5x
mcc = networkOperator.substring(0, 3);
mnc = networkOperator.substring(3);
} else {
mcc = "Unbekannt";
mnc = "Unbekannt";
}
List<CellInfo> cell = tm.getAllCellInfo();
System.out.println("List: "+cell);
if (cell != null) { //Always null with Nexus 5x
// TODO
} else {
cellID = "ERROR";
lac = "ERROR";
}
}
catch(Exception ex) {
mcc = "No Permission";
mnc = "No Permission";
cellID = "ERROR";
lac = "ERROR";
}
}
在尝试其他应用程序(如“Network Cell Info lite”)时,这些应用程序会获取所有单元格信息 :(
非常感谢任何帮助。