Android SmsManager.sendTextMessage失败,没有错误

问题描述

我正在尝试从应用程序活动发送短信。问题是没有引发异常,我可以看到发送的邮件显示了SMS(当我打开SMS消息应用程序时),但是带有红色的小图标,标签为“失败”。

我已将权限添加到应用程序清单中

<uses-permission android:name="android.permission.SEND_SMS"/>

就像我在活动开始时明确要求获得许可一样。

if (ActivityCompat.checkSelfPermission(this,Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) {
        System.out.println("App requires send sms permission");
        ActivityCompat.requestPermissions(this,new String[]{ Manifest.permission.SEND_SMS },1);
        return;
}

我发送短信时,代码为:

try {
        System.out.println("Sending sms...");
        SmsManager smgr = SmsManager.getSmsManagerForSubscriptionId(2);
        smgr.sendTextMessage("a valid recipient phone num",null,"Test 123",null);
        System.out.println("SMS sent.");
}
catch (Exception e){
        System.out.println(e.getMessage());
}

我叫getSmsManagerForSubscriptionId(2)而不是getDefault(),因为我有2个SIM卡设备,并且ID正确设置为2。

收件人电话号码采用国际格式(以+开头,然后是国家/地区代码等)。

我可以在控制台输出中看到“ SMS已发送”,并且未引发任何错误,但是,当我转到SMS应用程序并检查发件箱时,我看到消息“ Test 123”在那里,带有正确的收件人电话号码,但有标签旁边的红色小图标,显示“失败”。它还标记了SIM卡正确[2]。

我可以手动点击该图标并重新发送它,在这种情况下,它会起作用。

还尝试将getDefault用于SMS管理器,然后选择SIM卡#1,但失败了。

首次运行应用程序时,它会提示允许我发送“允许”的短信。

同样重要:失败的SMS不会立即显示在我发送的邮件中,而是5-10分钟后显示

有人遇到过同样的问题吗?我现在迷路了,不知道还要去哪里看看。

P.S。根据Mike.M的建议,对上述代码进行了编辑,以将null设置为服务中心号码。在评论中。仍然是同样的问题。

来自logcat:

2020-08-31 20:40:36.910 10587-10587/com.miradjajic.distancecare I/System.out: Debug: Trying to get all SIM cards available...
2020-08-31 20:40:36.913 10587-10587/com.miradjajic.distancecare I/System.out: Subscription ID: 1
2020-08-31 20:40:36.913 10587-10587/com.miradjajic.distancecare I/System.out: Subscription ID: 2
2020-08-31 20:40:37.849 10587-10630/com.miradjajic.distancecare I/System.out: Handle a message...
2020-08-31 20:40:37.849 10587-10630/com.miradjajic.distancecare I/System.out: Process queue...
2020-08-31 20:40:37.859 10587-10630/com.miradjajic.distancecare I/System.out: Query update user done!
2020-08-31 20:40:37.859 10587-10630/com.miradjajic.distancecare I/System.out: Data saved.
2020-08-31 20:40:38.859 10587-10630/com.miradjajic.distancecare I/System.out: Handle a message...
2020-08-31 20:40:38.859 10587-10630/com.miradjajic.distancecare I/System.out: Process queue...
2020-08-31 20:40:38.864 10587-10630/com.miradjajic.distancecare I/System.out: Query update user done!
2020-08-31 20:40:38.864 10587-10630/com.miradjajic.distancecare I/System.out: Data saved.
2020-08-31 20:40:39.865 10587-10630/com.miradjajic.distancecare I/System.out: Handle a message...
2020-08-31 20:40:39.865 10587-10630/com.miradjajic.distancecare I/System.out: Process queue...
2020-08-31 20:40:39.870 10587-10630/com.miradjajic.distancecare I/System.out: Query update user done!
2020-08-31 20:40:39.870 10587-10630/com.miradjajic.distancecare I/System.out: Data saved.
2020-08-31 20:40:40.870 10587-10630/com.miradjajic.distancecare I/System.out: Handle a message...
2020-08-31 20:40:40.870 10587-10630/com.miradjajic.distancecare I/System.out: Process queue...
2020-08-31 20:40:40.876 10587-10630/com.miradjajic.distancecare I/System.out: Query update user done!
2020-08-31 20:40:40.876 10587-10630/com.miradjajic.distancecare I/System.out: Data saved.
2020-08-31 20:40:56.502 10587-10587/com.miradjajic.distancecare I/Timeline: Timeline: Activity_launch_request time:2096808189
2020-08-31 20:40:56.518 10587-10587/com.miradjajic.distancecare W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@b397f90
2020-08-31 20:40:56.552 10587-10587/com.miradjajic.distancecare I/System.out: Sending sms...
2020-08-31 20:40:56.552 10587-10587/com.miradjajic.distancecare I/System.out: Subscription ID of current sms-manager: 2
2020-08-31 20:40:56.552 10587-10587/com.miradjajic.distancecare I/System.out: Sending SMS to number: +[my phone number,removed from this report]
2020-08-31 20:40:56.552 10587-10587/com.miradjajic.distancecare I/System.out: SMS sent.

没有引发异常。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)