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

Android官方Intent短信发送示例无法运行,请求原因解析

问题原因及解决方案

问题根源

  • ACTION_SENDTO 与 setType() 冲突
    ACTION_SENDTO 是专门用于通过 Uri(如 smsto:)指定接收方的短信发送 Intent,它不依赖 MIME 类型配置。示例代码中同时设置了 ACTION_SENDTO 和 setType(HTTP.PLAIN_TEXT_TYPE),系统找不到能同时匹配这两个条件的应用,导致 resolveActivity() 返回 null。

  • 未设置目标短信 Uri
    ACTION_SENDTO 必须通过 setData() 传入 smsto: 开头的 Uri(比如 Uri.parse("smsto:") 或带具体号码的 Uri.parse("smsto:123456")),否则系统无法识别这是指向短信应用的 Intent,自然找不到匹配的 Activity。

  • MMS 场景的 Intent 类型错误
    示例代码试图发送带附件的 MMS,但 ACTION_SENDTO 主要针对纯文本短信。带附件的 MMS 场景下,系统短信应用通常不匹配 ACTION_SENDTO,需要改用 ACTION_SEND 并设置正确的 MIME 类型。

  • Android 11+ 包可见性限制
    从 Android 11 开始,应用无法默认查询所有已安装应用。如果清单文件中未声明对短信相关 Intent 的查询权限,resolveActivity() 会返回 null。

修正后的代码示例

纯文本短信发送

public void composeSmsMessage(String message, String phoneNumber) {
    Intent intent = new Intent(Intent.ACTION_SENDTO);
    // 设置短信接收方Uri,空字符串表示让用户选择
    intent.setData(Uri.parse("smsto:" + (TextUtils.isEmpty(phoneNumber) ? "" : phoneNumber)));
    intent.putExtra("sms_body", message);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

带附件的 MMS 发送

public void composeMmsMessage(String message, Uri attachment) {
    Intent intent = new Intent(Intent.ACTION_SEND);
    // MMS 对应的标准 MIME 类型
    intent.setType("application/vnd.android.mms-message");
    intent.putExtra("sms_body", message);
    intent.putExtra(Intent.EXTRA_STREAM, attachment);
    // 可选:指定接收号码
    intent.putExtra("address", "123456");
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

补充:Android 11+ 包可见性配置

在 AndroidManifest.xml 中添加以下查询声明,确保系统能找到匹配的短信应用:

<queries>
    <!-- 匹配纯文本短信 Intent -->
    <intent>
        <action android:name="android.intent.action.SENDTO" />
        <data android:scheme="smsto" />
    </intent>
    <!-- 匹配 MMS 发送 Intent -->
    <intent>
        <action android:name="android.intent.action.SEND" />
        <data android:mimeType="application/vnd.android.mms-message" />
    </intent>
</queries>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:31:01