我阅读了有关getAllCellInfo()的所有文章,并遇到类似this的情况。
下面发布的代码在Android 6(OnePlus One)上运行良好,但在Google Nexus 5x Android 8.1 API 27上返回了Cellinfo的空列表。
我已在清单中设置了“权限访问权限”位置,并在首次运行应用程序时请求权限。
这是一个代码片段:
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”时,这些应用程序会获取所有单元格信息:(
非常感谢您的帮助。
最佳答案
在Android 8.0及更高版本中,要访问getAllCellInfo()
,您的应用应位于前台。
如果要访问getAllCellInfo()
,则还需要启用Location Service。
关于android - getAllCellInfo()在Nexus 5x上返回空列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48092791/