jeosh kurian e j Ответов: 1

Getallcellinfo() возвращает null в android oreo, когда приложение работает в фоновом режиме.как решить эту проблему?


getAllCellInfo() возвращает null, когда фоновая служба вызывает "getAllCellInfo()" и приложение находится в закрытом состоянии. Итак, как я могу получить значение getAllCellInfo() ?. (Я уже использовал getCellLocation() и getNeighboringCellInfo() для получения значений, и обе функции возвращают null)

Что я уже пробовал:

TelephonyManager telephonyManager = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
        ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
    // TODO: Consider calling
    //    ActivityCompat#requestPermissions
    // here to request the missing permissions, and then overriding
    //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
    //                                          int[] grantResults)
    // to handle the case where the user grants the permission. See the documentation
    // for ActivityCompat#requestPermissions for more details.

}

GsmCellLocation cellLocation = (GsmCellLocation) telephonyManager.getCellLocation();
String networkOperator = telephonyManager.getNetworkOperator();
String networOperatorName = telephonyManager.getNetworkOperatorName();
String networkTyInfo = String.valueOf(telephonyManager.getNetworkType());


int mnc = 0, mcc = 0;
if (!TextUtils.isEmpty(networkOperator)) {
    mcc = Integer.parseInt(networkOperator.substring(0, 3));
    mnc = Integer.parseInt(networkOperator.substring(3));
}
int cid =0;
int lac = 0;
if (cellLocation != null) {
     cid = cellLocation.getCid();
     lac = cellLocation.getLac();
}

GSMValues gsmValues = 
    new GSMValues(
        String.valueOf(lac), 
        String.valueOf(mcc), 
        String.valueOf(mnc), 
        String.valueOf(cid),
        String.valueOf(0),
        networkTyInfo,
        signalStrength,
        networOperatorName
);
// db = new DatabaseHelper(getApplicationContext());

1 Ответов

Рейтинг:
0

Gerry Schmitz

Изменения поведения: все приложения  |  Разработчики Android[^]

Цитата:
Информация о телефонии теперь зависит от настройки местоположения устройства

Если пользователь отключил расположение устройства на устройстве под управлением Android 9, следующие методы не дают результатов:

getAllCellInfo()
слушать()
getCellLocation()
getNeighboringCellInfo()


jeosh kurian e j

Если эти вышеупомянутые методы не получают значений.Затем какой метод используется для получения таких значений, как идентификатор ячейки, локальный код города и т. д...

David Crow

В этом-то все и дело. В целях безопасности Android ограничивает доступ к этой информации, если Службы определения местоположения устройства были отключены. Ваше приложение должно будет учитывать это и не предполагать, что такая информация доступна.