问题描述
我正在尝试从应用程序活动发送短信。问题是没有引发异常,我可以看到发送的邮件中显示了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 (将#修改为@)