我阅读了有关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/

10-10 18:05