Siniša
Siniša

Reputation: 3168

Android SmsManager.sendTextMessage fails without error

I am trying to send an SMS from the application Activity. Issue is that there is no exception thrown, and I can see that SMS is shown in my sent items (when I open SMS message app) but with small red icon with label "Failed".

I have permission added to the application manifest:

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

As well as I do explicitly ask for permission when activity starts.

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;
}

When I send SMS, code is:

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

I call getSmsManagerForSubscriptionId(2) instead of getDefault() because I have 2 SIM cards device and ID is correctly set to 2.

Recipient phone number is in international format (starts with +, then country code etc).

I can see in console output "SMS sent" and no error thrown, however, when I go to SMS app and check outbox, I see the message "Test 123" is in there, with correct recipient phone number, but has small red icon next to it with label "Failed". It also has marked correct [2] for SIM card.

I can tap on that icon manually and resend it, in which case it works.

Also tried using getDefault for SMS manager, which then selects SIM card #1, but fails the same.

When running app for the first time it does prompt to allow permission to send SMS which I opt-in "Allow".

Also important: failed SMS does not immediately appear in my sent items, rather after 5-10 minutes.

Anyone had same issue? I'm lost now, have no idea where more to look at.

P.S. Edited above code to set null for service center number, as suggested by Mike.M. in the comments. Still the same issue though.

From 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.

No exceptions thrown.

Upvotes: 0

Views: 409

Answers (0)

Related Questions