如何监听Android设备SIM卡状态变化?

本文详细讲解Android设备SIM卡状态监听方案,涵盖权限配置、广播接收器实现、状态解析和双卡适配等关键技术点,提供可落地的代码示例和版本适配建议。

一、权限配置与动态请求

在AndroidManifest.xml中添加基础权限声明,需包含READ_PHONE_STATE权限以获取SIM卡状态信息。针对Android 6.0及以上设备,必须在运行时动态申请权限。

如何监听Android设备SIM卡状态变化?

代码1:权限声明配置

动态权限请求示例:

if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_CODE);
代码2:运行时权限请求

二、广播接收器实现

通过BroadcastReceiver监听系统广播ACTION_SIM_CARD_STATE_CHANGED,该广播在SIM卡插拔、状态变更时触发。需在清单文件中声明接收器并注册对应广播事件。





代码3:广播接收器注册

三、SIM卡状态判断与处理

在广播接收器的onReceive方法中,通过TelephonyManager获取当前SIM卡状态码,常用状态包括:

  • SIM_STATE_READY:正常可用状态
  • SIM_STATE_ABSENT:SIM卡未插入
  • SIM_STATE_UNKNOWN:未知状态

建议结合getSimOperatorName获取运营商信息辅助判断。

四、双卡设备适配方案

针对双卡设备需使用SubscriptionManager获取多卡信息,通过getActiveSubscriptionInfoList遍历所有SIM卡。为每个卡槽单独注册状态监听器,需指定slotIndex参数区分物理卡槽。

SubscriptionManager subManager = (SubscriptionManager)
getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
List subList = subManager.getActiveSubscriptionInfoList;
代码4:双卡信息获取

完整的SIM卡状态监听方案需综合权限管理、广播接收、状态解析三个核心模块。对于新型双卡设备,建议采用TelephonyManagercreateForSubscriptionId方法创建卡槽专属实例。实际开发中需注意Android不同版本的行为差异,特别是Android 10及以上对设备标识符的访问限制。

本文由阿里云优惠网发布。发布者:编辑员。禁止采集与转载行为,违者必究。出处:https://aliyunyh.com/1083252.html

其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
上一篇 3天前
下一篇 3天前

相关推荐

发表回复

登录后才能评论
联系我们
联系我们
关注微信
关注微信
分享本页
返回顶部