Android:尝试通过 SmsManager 发送短信会将消息重定向到没有地址的默认应用程序

问题描述

根据磁贴,我使用以下代码

SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(sms_receiver,null,sms_content,null);

没有错误也没有例外。 虽然上述内容在我使用的 android studio 模拟器中似乎运行良好,但当我在我的设备上安装我的应用程序时,同样没有错误或崩溃,但该消息作为没有收件人的草稿发送到我的认 SMS 应用程序。

经过我的搜索,我相信我的手机是双卡(虽然我的设备中只插入了一个)是问题所在,可以使用“scAddress”参数来解决

我仍然不确定以上是否正确,而且我找不到以编程方式获取 scAddress 的方法

如果相关的话,我的模型是小米红米 Note 6 Pro 和 Android 应用程序的 API:

 minSdkVersion 25
 targetSdkVersion 29

解决方法

我假设您已经尝试在 smsManager.sendTextMessage 的第二个参数中设置服务中心地址?

https://developer.android.com/reference/android/telephony/gsm/SmsManager#sendDataMessage(java.lang.String,%20byte[],%20android.app.PendingIntent)

看起来应该是电话号码:查看此处了解更多信息:

https://www.developershome.com/sms/cscaCommand.asp

,

问题确实在于

SmsManager smsManager = SmsManager.getDefault();

没有获得有效的 SIM 卡插槽。我使用了在这个答案中找到的片段: Android: How to send sms with particular SIM in dual sim mobiles?

现在该应用需要 READ_PHONE_STATE 权限,我希望不是这种情况,但它按预期工作(即 SMS 正在由我的应用发送)。