一、权限配置与动态请求
在AndroidManifest.xml中添加基础权限声明,需包含READ_PHONE_STATE
权限以获取SIM卡状态信息。针对Android 6.0及以上设备,必须在运行时动态申请权限。
动态权限请求示例:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_CODE);
二、广播接收器实现
通过BroadcastReceiver
监听系统广播ACTION_SIM_CARD_STATE_CHANGED
,该广播在SIM卡插拔、状态变更时触发。需在清单文件中声明接收器并注册对应广播事件。
三、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;
完整的SIM卡状态监听方案需综合权限管理、广播接收、状态解析三个核心模块。对于新型双卡设备,建议采用TelephonyManager
的createForSubscriptionId
方法创建卡槽专属实例。实际开发中需注意Android不同版本的行为差异,特别是Android 10及以上对设备标识符的访问限制。
本文由阿里云优惠网发布。发布者:编辑员。禁止采集与转载行为,违者必究。出处:https://aliyunyh.com/1083252.html
其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。