У меня проблема в приложении, в котором есть функция, которая показывает текущий CellId.
Протестировано это приложение на разных телефонах, но некоторые из них не хотят показывать даже список allCellInfo
, однако приложение под названием Network Cell Info отлично работает и показывает все о текущем CellId.
Только при включении GPS процесс работает нормально, и я вижу обновления CID.
Вот фрагмент кода (проверен на SDK 29):
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
@RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
@SuppressLint("MissingPermission")
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 as CellInfoWcdma).cellIdentity
cid = num.cid
break
}
if (networkType is CellInfoGsm) {
val num = (networkType as CellInfoGsm).cellIdentity
cid = num.cid
break
}
}
return Pair(cid, cellInfoList.toString())
}
else{
cid = 0
return Pair(cid, "")
}
}
Что можно сделать здесь, чтобы получить информацию о соте на каждом телефоне?
Обновление
Пока я пробовал это. Понизил SDK до 28 и получил методы с именами getNeighboringCellInfo()
и getCellLocation()
. Протестировано getCellLocation()
на некоторых эмуляторах с Android 8 и ниже (насколько я знаю, Android 9 требует включения GPS для получения информации о ячейке). Все работало нормально без GPS, пока я не решил проверить это на своих телефонах.
В результате приложение cra sh на getCellLocation()
, поскольку оно возвращает нулевое значение. Однако я также проверил информацию о ячейке сети, где увидел, что информация о текущих подключениях отображается без GPS.