Nokia C01 Plus(Android 11 Go)发送SMS抛出UnsupportedOperationException问题
设备:Nokia C01 Plus,Android 11 Go
一款配置正确、已正常运行数周的APP,突然在发送短信时抛出**"Sms is not supported"**异常。经诊断,这是手机SMS系统完全故障,表现就像无SMS功能的Android设备。该问题可通过冷重启(关机→等待→开机,而非系统自带的“重启”)解决,目前已有第二台同型号设备出现相同问题。部分手机支持软件触发冷重启,但这款设备不支持。
初始摘要
2023-06-24 04:22:41
[STACK_TRACE]=java.lang.UnsupportedOperationException: Sms is not supported
抛出异常的代码特征:
- 在其他设备上正常运行多年
- 此前在该设备及同型号设备上运行正常
- 在故障设备上持续抛出异常,直至重启后恢复
- 排除权限问题,大概率也不是网络故障
平台背景
我司产品是搭载Android APP的消费级手机,APP支持收发SMS,已投产十年,引发问题的代码段存在五年以上。
2023年3月起,我们开始在Nokia C01 Plus(Android 11 Go)上部署该APP,累计部署20台,其中一台在6月出现此问题。
适配Android 11 Go时已解决新权限机制问题,但无法禁用Nokia C01 Plus的系统更新推送,目前只能通过关闭Wi-Fi规避。
出问题的设备于2023年5月部署,同型号新旧设备均运行正常。
问题详情
该设备正常发送SMS数周后,突然抛出以下异常:
2023-06-24 04:22:41 [STACK_TRACE]=java.lang.UnsupportedOperationException: Sms is not supported at android.telephony.SmsManager.getISmsServiceOrThrow(SmsManager.java:1658) at android.telephony.SmsManager.getSubscriptionId(SmsManager.java:1520) at android.telephony.SmsManager.resolveSubscriptionForOperation(SmsManager.java:1545) at android.telephony.SmsManager.sendTextMessageInternal(SmsManager.java:601) at android.telephony.SmsManager.sendTextMessage(SmsManager.java:443) at au.com.cba.nopowersms.services.SendSmsBase.sendSmsToNumber(SendSmsBase.java:192) at
异常出自上述代码第192行。
异常首次出现后,APP每次尝试发送SMS都会抛出该异常,直到手机重启。
已排除以下可能性:
- 权限缺失:APP已获取SMS及PHONE权限,权限缺失会抛出SecurityException: Sending SMS message: uid 10157 does not have android.permission.SEND_SMS
- 常规网络不可用:通过运营商停用SIM卡模拟故障,可通过sentIntent正常处理
重启手机后问题解决,未做其他更改,SMS恢复正常发送。但网络日志显示故障发生时可能存在网络中断。
疑问
网络中断是否会引发该异常?毕竟停用SIM卡的情况可被正常处理?
我的推测:该问题并非网络原因,而是手机系统或硬件故障,错误判定“SMS不支持”,重启可修复,可能与强制系统更新推送有关,但其他同型号设备未出现此问题。手机错误报告“SMS不支持”且重启可修复,这种情况是否合理?
是否有其他解释或建议?
补充信息
初次反馈后新增测试及发现:
- 测试移除SIM卡,未重现异常,而是通过sentIntent的BroadcastReceiver返回
SmsManager.RESULT_ERROR_NO_SERVICE并记录日志 - Nokia C01 Plus是双卡设备!搜索发现双卡手机存在相关问题,已确认SIM卡插入卡槽1,但系统可能出现识别混乱,比如网络中断时切换至不存在的卡槽2?
- 第二台同型号设备出现相同故障:正常运行一个月后无法发送SMS,其他功能正常,客户尚未重启
- 首次故障至重启期间,SMS通信完全中断:APP及系统Messenger均未收到SMS,但网络日志显示短信已发出,此问题显然为系统或硬件故障,大概率与双卡功能相关
内容的提问来源于stack exchange,提问作者Stephen Hosking

