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

如何在Xamarin Android中无需点击发送按钮自动发送短信

自动发送短信实现方案

你当前使用的Sms.ComposeAsync是Xamarin.Essentials封装的系统短信界面调起API,设计定位就是生成短信草稿后跳转到系统短信页,必须用户手动确认才能发送,无法通过这个API实现自动发送逻辑。你可以通过编写平台特定的原生代码实现需求,具体方案如下:


第一步:共享项目定义跨平台调用接口

在公共代码项目中新增ISmsSender接口,用于跨平台调用:

public interface ISmsSender
{
    Task SendSmsAsync(string phoneNumber, string content);
}

第二步:Android端实现自动发送逻辑

  1. 权限配置:在Android项目的AndroidManifest.xml中添加发送短信权限:
    <uses-permission android:name="android.permission.SEND_SMS" />
    
    安卓6.0及以上版本需要额外在代码中动态申请SEND_SMS权限,仅授予短信读写权限无法满足发送要求。
  2. 接口实现:在Android项目中新增接口实现类:
    [assembly: Dependency(typeof(SmsSenderAndroid))]
    namespace 你的应用命名空间.Droid
    {
        public class SmsSenderAndroid : ISmsSender
        {
            public Task SendSmsAsync(string phoneNumber, string content)
            {
                SmsManager.Default.SendTextMessage(phoneNumber, null, content, null, null);
                return Task.CompletedTask;
            }
        }
    }
    

注意:部分安卓定制系统会对第三方应用自动发送短信做风险拦截,即使有权限也可能发送失败,需要引导用户在系统安全设置中给应用开启自动发短信白名单权限。

第三步:iOS端限制说明

受苹果系统隐私政策限制,iOS不允许任何第三方应用后台自动发送短信,所有短信发送操作必须调起系统的短信发送页面,由用户手动点击发送才能完成,iOS端没有合规的自动发送短信实现方案。

第四步:跨平台调用

在需要发送短信的公共代码位置,直接调用依赖服务即可:

var smsSender = DependencyService.Get<ISmsSender>();
await smsSender.SendSmsAsync(Mobile_Number, SMS_Message);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:36:03