Pav*_*zev 5 android location cell kotlin
我在具有显示当前 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, "")
}
}
Run Code Online (Sandbox Code Playgroud)
在这里可以做什么来获取每部手机上的手机信息?
更新
到目前为止我尝试过这个。将 SDK 降级到 28 并获得了名为getNeighboringCellInfo()和 的方法getCellLocation()。在 Android 8 及更低版本的一些模拟器上进行了测试getCellLocation()(据我所知,Android 9 需要打开 GPS 才能获取手机信息)。在没有 GPS 的情况下一切都工作正常,直到我决定在手机上测试它。
结果应用程序崩溃,getCellLocation()因为它返回空值。不过,我还检查了网络小区信息,我看到有关当前连接的信息显示没有 GPS。
据我所知,Android 10强制ACCESS_FINE_LOCATION授予权限。这样,GPS 也需要打开。只有这样,如果信息可用,此方法才会返回您需要的信息。对于 Android 9.0 (API 28) 或更低版本,它应该按预期工作。
所以,这就是我要检查的内容。
1)查看应用程序是否拥有权限READ_PHONE_STATE。
2)查看应用程序是否拥有权限ACCESS_FINE_LOCATION。(适用于 API 29 及以上)
3)查看GPS是否确实打开。(适用于 API 29 及以上)
4) 检查设备是否有SIM 卡以及是否有服务。
如果这些都已到位,但信息仍然为空,那么我会怀疑这种情况下的设备本身。我不确定如果所有这些都到位的话会出现什么问题。
| 归档时间: |
|
| 查看次数: |
789 次 |
| 最近记录: |