Получение данных 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 прописаны все необходимые библиотеки