You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Android Studio中如何稳定获取手机蜂窝基站的eNB ID

Android 应用获取蜂窝基站信息配置阶段注意事项
  • 权限配置要覆盖不同系统版本要求
    首先需在AndroidManifest.xml中声明基础权限,Android 6.0及以上版本必须额外做动态权限申请:
    • 通用场景需要声明ACCESS_COARSE_LOCATION权限,targetSdkVersion >= 31 时额外需要ACCESS_FINE_LOCATION、READ_PHONE_STATE权限,缺少任意权限都会导致接口调用直接崩溃,且部分系统会过滤这类权限错误的崩溃日志,导致无报错反馈
    • 所有敏感权限必须先确认用户已授权,再执行基站信息获取逻辑,不要直接在应用启动阶段就调用相关接口
  • 废弃接口兼容处理要到位
    • Android 10(API 29)开始,原getCellLocation()方法已被正式废弃,高版本系统上调用该接口会直接触发崩溃,必须使用getAllCellInfo()替代获取基站列表
    • Kotlin 代码中所有CellIdentity相关的字段取值必须加非空判断,运营商、芯片平台差异可能导致部分字段返回空值,不做空安全处理会直接抛出空指针异常闪退
  • 运行前置判断不能省略
    • 调用接口前必须先判断当前蜂窝网络类型,仅LTE、5G NSA网络下存在eNB ID,当前为2G/3G/纯5G SA网络时,强制读取LTE相关字段会触发类型转换异常
    • 要提前判断设备是否插入有效SIM卡、蜂窝网络是否处于可用状态,无SIM卡状态下调用TelephonyManager相关接口大概率直接崩溃
  • 异常捕获兜底必须做
    所有蜂窝信息相关的调用逻辑必须套try-catch块捕获所有异常,部分国内定制ROM对蜂窝信息获取做了额外限制,即使权限、配置全符合要求,也可能抛出厂商自定义的安全异常,未捕获就会直接导致应用崩溃
  • 特殊机型适配要预留方案
    部分厂商ROM要求额外开启系统设置中的「高精度位置权限」「设备信息获取权限」才能拿到基站相关字段,即使应用侧已经申请完所有官方要求的动态权限,也要做字段为空的兜底处理,不要强依赖接口返回值

内容的提问来源于stack exchange,提问作者F4Wins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:18:01