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

Android实现SMS Token功能后发送短信无响应问题排查求助

问题排查与修复方案

1. 系统版本兼容校验

SmsManager.createAppSpecificSmsToken()是Android 10(API Level 29)才新增的API,若测试设备系统版本低于Android 10,该功能无法生效,请更换API等级≥29的设备测试。

2. 短信格式校验

要触发绑定的PendingIntent,发送的短信必须仅包含你生成的11位token,不能有任何额外字符,不能添加「验证码:」前缀、换行、说明文字等其他内容。

3. 修正PendingIntent配置

Android 12及以上系统中,FLAG_IMMUTABLE标记会导致系统无法向Intent注入短信相关参数,部分场景下会触发失败,修改createSmsTokenPendingIntent方法如下:

private fun createSmsTokenPendingIntent(): PendingIntent? {
    val flag = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
        PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
    } else {
        PendingIntent.FLAG_UPDATE_CURRENT
    }
    return PendingIntent.getActivity(
        this, 
        1234,
        Intent(this, SmsTokenResultVerificationActivity::class.java), 
        flag
    )
}

注意导入android.os.Build包。

4. 校验Activity注册配置

需在项目AndroidManifest.xml中注册SmsTokenResultVerificationActivity,否则系统触发PendingIntent时找不到目标页面,不会产生响应,注册示例:

<activity
    android:name=".SmsTokenResultVerificationActivity"
    android:exported="true" />

Android 12及以上版本的Activity必须显式声明android:exported属性。

5. 日志排查

若修改后仍无响应,可在SmsTokenResultVerificationActivity的onCreate方法中添加日志确认页面是否被启动:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    Log.d("SmsDebug", "验证页面已触发")
    // 原有代码保持不变
}

内容的提问来源于stack exchange,提问作者Hasan A Yousef

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:09:00