Получение данных CellInfo без GPS

Пишу приложение на Kotlin по сбору данных с вышек сети, конкретнее - их CellId. На днях столкнулся с проблемой - на некоторых аппаратах для получения списка allCellInfo необходим включенный GPS. В то время как в уже имеющихся программах с более продвинутым функционалом наличие включенного GPS не нужно. Скорее всего, они были написаны на более ранних версиях SDK, где существовала поддержка рабочих методов getNeighboringCellInfo() и getCellLocation() для TelephonyManager.

Моя функция выглядит так:

var cid = 0
fun getcids(manager: TelephonyManager): Pair<Int, String> {
    val cellInfoList = manager.allCellInfo
    if (cellInfoList != null) {
        for (networkType in cellInfoList) {
            if (networkType is CellInfoLte) {
                cid = networkType.cellIdentity.ci
                break
            }
            if (networkType is CellInfoWcdma) {
                val num = networkType.cellIdentity
                cid = num.cid
                break
            }
            if (networkType is CellInfoGsm) {
                val num = networkType.cellIdentity
                cid = num.cid
                break
            }
        }
    }
    else{
        cid = 0
        val cellInfoList = ""
    }
    return Pair(cid, cellInfoList.toString())
}

Пробовал понижать API до версии версии 28, мне стали доступны методы getNeighboringCellInfo() и getCellLocation() и они работали на эмуляторах, но на телефонах по-прежнему требовали наличие включенного GPS. Пока что теряюсь в догадках, что и как делать: есть ли в принципе возможность на API 28-29 найти метод, позволяющий собирать данные вышек без включенного GPS (на всех версиях Android 8 и ранее это точно возможно, начиная с 9-го - GPS везде требуется по умолчанию), либо нужно понижать API до 21 (видел где-то среди ответов на похожие вопросы с allCellInfo) для доступа методов к данным сотовых вышек без GPS.

Если кто-то сталкивался с подобным, пожалуйста, помогите советом.

P.S. Пока пытался понизить API до 21 - даже стандартное приложение с EmptyActivity не запускается, хотя в gradle app прописаны все необходимые библиотеки


Ответы (0 шт):