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

.NET Maui中Android.Telephony发布失败,求替代方案及解决建议

.NET Maui短信应用发布打包失败(关联Android.Telephony)的解决办法

针对Android.Telephony的排查修复步骤

  • 补全权限声明:确认AndroidManifest.xml里加全短信相关权限:SEND_SMS、RECEIVE_SMS、READ_SMS,发布模式下权限校验更严格,缺权限会触发打包失败。
  • 清缓存重编译:删掉项目根目录的bin、obj文件夹,再执行命令 dotnet nuget locals all --clear 清空NuGet缓存,重新生成发布包,解决编译缓存冲突问题。
  • 匹配SDK版本:检查项目的Android目标SDK版本,建议调整到33或34,确保和Android.Telephony的API版本兼容,同时保证编译SDK版本和目标版本一致。
  • 禁用Telephony类混淆:发布模式默认开启混淆,若Telephony相关类被混淆会导致打包失败,在proguard.cfg里添加规则:
    -keep class android.telephony.** { *; }
    -keep class android.provider.Telephony.** { *; }
    
  • 升级.NET Maui版本:换成最新稳定版的.NET Maui SDK,旧版本可能存在与Android.Telephony的兼容性bug,升级后大概率能解决已知问题。

替代方案推荐

  • 用.NET Maui Essentials的SMS API:不用直接操作Android.Telephony,Essentials封装了简化的短信功能,代码更简洁且兼容性更好,示例:
    var smsMessage = new SmsMessage("接收号码", "短信内容");
    await Sms.ComposeAsync(smsMessage);
    
  • 调用系统短信应用:如果不需要后台处理短信,直接调用系统默认短信APP发送,完全绕开Telephony API,示例:
    var smsUri = Android.Net.Uri.Parse($"smsto:接收号码");
    var sendIntent = new Intent(Intent.ActionSendto, smsUri);
    sendIntent.PutExtra("sms_body", "短信内容");
    Platform.CurrentActivity.StartActivity(sendIntent);
    
  • 改用第三方云端短信服务:比如阿里云、腾讯云的短信服务,通过HTTP接口发送短信,彻底脱离Android原生Telephony依赖,适合批量发送或需要云端管控的场景。

内容的提问来源于stack exchange,提问作者Ambie James Nicolas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 02:05:23