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

Android中SmsManager代码报IllegalArgumentException,请求排查解决

解决SmsManager.sendTextMessage抛出IllegalArgumentException的问题

抛出IllegalArgumentException基本是参数不合法导致的,结合你的代码,从这几个方向排查:

  • 检查目标号码有效性
    确认userPhonePlaceOrder.getText().toString().trim()的结果不是空串、也没有非数字字符(比如空格、符号)。很多时候trim后可能因为输入框为空变成空字符串,直接传空号码会触发这个异常。可以先打印这个值,或者加个非空判断。

  • 检查短信内容是否合规
    如果userNamePlaceOrder.getText().toString()是空串,部分系统会拒绝发送并抛出异常;另外如果内容长度超过单条短信上限(普通短信70字符,Unicode短信160字符),也会触发异常,这种情况需要用sendMultipartTextMessage拆分发送。

  • 添加参数校验逻辑
    给参数加非空判断再执行发送,避免空参数传入:

    String targetPhone = userPhonePlaceOrder.getText().toString().trim();
    String messageContent = userNamePlaceOrder.getText().toString();
    
    if (!TextUtils.isEmpty(targetPhone) && !TextUtils.isEmpty(messageContent)) {
        SmsManager smsManager = SmsManager.getDefault();
        smsManager.sendTextMessage(targetPhone, null, messageContent, null, null);
    } else {
        // 处理号码或内容为空的情况,比如提示用户输入完整信息
    }
    
  • 核对项目配置差异
    既然相同代码在其他项目能跑,检查当前项目的targetSdkVersion是否和正常项目一致,部分高版本SDK对短信发送的参数校验更严格;另外确认权限声明是否完全一致(比如是否在Manifest里加了<uses-permission android:name="android.permission.SEND_SMS"/>,并且动态申请了权限)。

内容的提问来源于stack exchange,提问作者1239-Ayush VaZe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 21:03:13