https://bugs.kde.org/show_bug.cgi?id=527365

            Bug ID: 527365
           Summary: Stock Android 17 delivers MMS sent from the desktop,
                    then stores it twice and loses it, so it never syncs
                    to the desktop
    Classification: Applications
           Product: kdeconnect
      Version First unspecified
       Reported In:
          Platform: Pop!_OS
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: android-application
          Assignee: [email protected]
          Reporter: [email protected]
                CC: [email protected]
  Target Milestone: ---

DESCRIPTION
I discovered and investigated this issue while updating Connected, a COSMIC
applet that is a libcosmic front end for kdeconnectd.
(https://github.com/nwxnw/cosmic-ext-connected)  I confirmed this issue also
exists with the KDE Connect SMS app on PopOS 24.04.

An MMS sent from the desktop (sendSms with attachments, or a group text) is
delivered to the recipients, but the phone keeps no usable record of it. The
pdu row in content://mms is gone shortly after sending, while its addr and part
rows remain, each written twice. Because the message is not in the store, KDE
Connect never reports it back to the desktop, and Google Messages shows the
send as "Not sent" (usually twice) or not at all. SMS sent from the desktop is
unaffected. The doubling comes from stock Android 17's new message-upgrade
fallback (see below), so this is not Samsung-specific.

This started with the phone's Android 17 update on 2026-10-14. Sent MMS rows
created by org.kde.kdeconnect_tp up to 2026-10-11 are still in the store with
msg_box=2. The next desktop MMS, on 2026-10-15, and all five since have lost
their row (doubled parts and addresses, no pdu row).

STEPS TO REPRODUCE
1. From the desktop, send an MMS: a photo to one contact, or a text to a group
conversation.
2. On the phone, look at the conversation in Google Messages, and on the
desktop wait for the sent message to sync back.

OBSERVED RESULT
- The recipients receive the message.
- Google Messages shows "Not sent" (often two entries with Resend/Delete), or
nothing.
- The desktop never receives the sent message.
- The message's row is gone, but its addresses and parts are stored twice:

    adb shell content query --uri content://mms --where "_id=<id>"     (no
result)
    adb shell content query --uri content://mms/<id>/addr              (from
and to, twice each)
    adb shell content query --uri content://mms/<id>/part              (SMIL
and image, twice each)

EXPECTED RESULT
The sent MMS appears in the phone's message store as sent and syncs back to the
desktop, as it did up to 2026-10-11.

SOFTWARE/OS VERSIONS
- Phone: Samsung Galaxy S24+ (SM-S926U), One UI build S926USQU6EZIF, Android
17, security patch 2026-09-05, carrier AT&T, installed 2026-10-14
- KDE Connect Android 1.36.0 (Play Store), installed 2026-10-11
- Default SMS app: Google Messages messages.android_20261002, RCS chats on
- Desktop: kdeconnectd 23.08.5 via its D-Bus sendSms; also reproduced with the
stock kdeconnect-sms app's replyToConversation


ADDITIONAL INFORMATION
In android-17.0.0_r1 (flag messagePromotion), when a non-default app sends an
MMS, MmsService first writes it to the outbox, then offers it to the default
SMS app through the new AlternativeMessageTransportService. Google Messages
rejects the offer. The fallback, sendMessageWithoutUpgrade, reuses the outbox
row, and PduPersister.persist() on an existing URI inserts every part and
address again without removing the first set. That gives exactly the doubled
rows above. Nothing in this path deletes the pdu row; I suspect Google Messages
discards the malformed message, but have not confirmed it. Since this is stock
code, it should affect any Android 17 phone whose default SMS app rejects the
upgrade.

Key logcat lines from one photo send:

  D MmsService: sendMessage messageUri:content://mms/outbox/21151
  D MmsService: Upgrading MMS via default SMS app.
  I dqtp    : Alternative message transport service is disabled. Rejecting
upgrade.
  D MmsService: [SendRequest ...] HTTP: 200 OK
  D TP/MmsProvider: update uri=content://mms/sent/21151, match=5, calling pid=
4510
  D TP/MmsProvider: insert, match=13, uri=content://mms/21151/addr, callingPid
= 4510

(dqtp is Google Messages; pid 4510 is the telephony process.)

Ruled out:

- KDE Connect 1.36.0 (installed 2026-10-11): its MMS send path is unchanged
from 1.35.17, and every store write above comes from the telephony process.
- Restricted messages (bug 523424): with READ_RESTRICTED_MESSAGES granted, the
rows are still absent, and adb shell content query sees restricted rows but not
these, so they are deleted, not hidden.
- SMS: text sends take the same upgrade step and are rejected the same way, but
are stored and synced normally.
- The SecurityException reading APNs, logged on every MMS, is caught and does
not stop the send.

Questions:

- Can KDE Connect avoid the fallback? I think sendMultimediaMessage is the only
MMS route for a non-default app, but you may know better.
- Has anyone reproduced this on a Pixel or another Android 17 phone? I have
only the one.

The doubling looks like a platform bug, and I can report it to Google as well.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to