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

Android: Attempting to send an SMS via SmsManager redirects the message to the default app with no address

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

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

没有错误也没有异常。 虽然上面的内容在我使用的 android studio 模拟器中似乎工作正常,但当我在我的设备上安装我的应用程序时,再次没有错误或崩溃,但消息作为草稿发送到我的默认 SMS 应用程序,没有收件人。

在搜索之后,我被认为是我的手机 phone 是双 SIM 卡(虽然我的设备中只插入了一个)这一事实是问题所在,可以通过使用“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,%20java.lang.String,%20short,%20byte[],%20android.app.PendingIntent,%20android.app.PendingIntent)

看起来应该是 phone 号码:在此处查找更多信息:

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

问题确实是

SmsManager smsManager = SmsManager.getDefault();

没有获得活动的 SIM 插槽。我使用了这个答案中的片段:

现在应用程序需要 READ_PHONE_STATE 许可,我不希望是这种情况,但它按预期工作(即短信由我的应用程序发送)。