双卡手机:能否通过NotificationListenerService获取短信所属SIM卡信息?是否需其他监听器?
双卡手机获取短信对应SIM卡信息的方案
- 直接通过
StatusBarNotification获取SIM卡信息不可靠:系统短信通知的StatusBarNotification并未标准化携带SIM卡标识,不同厂商的通知结构差异极大,少数厂商可能在通知extras中加入自定义字段,但没有统一规则,无法适配所有机型。 - 更可靠的方案是使用短信专属监听方式:
- 广播接收器(
BroadcastReceiver):监听android.provider.Telephony.SMS_RECEIVED广播,在广播Intent的extras中,可通过"slot"或"simId"字段获取SIM卡槽ID(不同厂商字段名可能有差异,但兼容性远优于通知解析); - 内容观察者(
ContentObserver):监听短信内容提供者content://sms/的变化,读取短信记录中的sim_id字段,这种方式稳定性更高,但需要申请READ_SMS权限。
- 广播接收器(
- 若坚持使用
NotificationListenerService,可尝试解析通知的contentIntent或extras中的自定义数据,但这种方式仅能适配特定机型,不建议作为通用方案。
内容的提问来源于stack exchange,提问作者Антон войтенко
相关产品推荐
相关产品推荐

