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

Android应用预填充短信内容问题:点击按钮无响应

问题解决:Android短信Intent无响应

问题分析

你当前代码存在几个关键问题导致点击按钮无反应:

  • 错误的Intent判断逻辑:用activity?.intent(原页面的Intent)作为执行条件,一旦原页面Intent为空,就不会触发短信Intent的启动逻辑,这一判断完全多余。
  • 变量名冲突:在try块内重新定义了同名的intent变量,可能引发语法或逻辑异常。
  • 上下文适配缺失:如果你的context不是Activity类型,直接启动Intent需要添加FLAG_ACTIVITY_NEW_TASK标记,否则会启动失败。
  • 代码不完整:try块和if语句未闭合,存在语法错误,导致代码无法正常执行。

修正后的代码

val activity = context.findActivity()
val smsPermission = checkSmsPermission(context)

if (smsPermission) {
    Logger("SmsDialogContent").writeToLog("SMS PERMISSION TRUE")
    try {
        // 直接创建短信Intent,无需依赖原页面Intent
        val smsIntent = Intent(Intent.ACTION_VIEW, Uri.parse("sms:"))
        // 替换为带链接的目标短信内容
        val smsContent = "This is your receipt: www.recipt.something"
        smsIntent.putExtra("sms_body", smsContent)
        
        // 处理非Activity上下文的启动场景
        if (context !is Activity) {
            smsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
        }
        
        context.startActivity(smsIntent)
    } catch (e: Exception) {
        // 捕获异常便于排查问题
        Logger("SmsDialogContent").writeToLog("Failed to start SMS intent: ${e.message}")
    }
}

额外注意事项

  • 短信内容无需使用HTML标签,直接放置纯文本链接即可,短信应用会自动识别为可点击链接。
  • 确保checkSmsPermission方法正确处理了Android 6.0及以上版本的SEND_SMS动态权限申请。
  • 兼容Android 12+时,使用ACTION_VIEW方式无需额外配置特殊权限,系统会自动唤起默认短信应用。

内容的提问来源于stack exchange,提问作者Equlo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 11:35:13