Corrupted SMS on Android

For a couple of weeks I have been receiving strangely composed SMS from a friend. It was as if two totally separate conversations were being mixed together into one long message.

At first I thought my friend might have been inebriated when he sent them (not unusual for him!) but as the messages continued to come through in this strange fashion I wondered if perhaps he was suffering from a split-personality.

Eventually I called him up and we compared messages. It turned out that the messages I was receiving on my Android device bore little resemblance to the messages he was sending. At first I thought this could be due to a corrupt SMS database on his iPhone, but after some searching I came across an Android bug report which perfectly described the issue I was experiencing:

» Issue 17769: Multipart SMS getting mixed up with old messages

The first post on this thread is dated June 2011, so the problem has been around for quite a while! I was pleased that I wasn’t alone in experiencing the issue, but what was the cause and how could I fix it?

Another Android bug report – Issue 28697 – had the answers:

Under certain circumstances, SMSDispatcher can incorrectly construct multi-part SMS messages, resulting in a corrupted message being dispatched to the applications. The corrupted message contains parts from previously received multi-part SMS messages instead of the corresponding parts from the newly received message.

In this more recent report, the author Ian Payton has identified the problem to be partly due to the way in which multi-part SMS is implemented, and partly to how Android processes multi-part messages.

If you want all the details then head on over to Ian’s detailed explanation, but the quick version is that an Android device can sometimes end up with orphaned SMS which it doesn’t know what to do with. These are usually the result of a message being retransmitted by the network because it did not receive a delivery acknowledgement from your device. This can occur if you are in patchy cellular coverage for example.

The SMS protocol uses an internal reference number to help reassemble a concatenated message, but this reference is not unique and if you have one or more of these orphaned messages on your device then in some circumstances the message parts can get mixed up to erroneously construct a new Frankenmessage!

This has the effect of your being presented with a message which is made up of some of the new message and some of an old message which has been hanging around in limbo on your device.

That’s all very well, but how can you fix this situation?

Ian has kindly written SMS Multi-Part Cleaner, a small Android application which finds all the orphaned SMS on your device and allows you to review and delete them manually. Alternatively you can download the very similar Orphaned Texts app from Google Play.

If you are prone to patchy cellular coverage and frequently receive long SMS then you be advised to run this application every few weeks to check for orphaned messages.

2 thoughts on “Corrupted SMS on Android

  1. I’ve been searching for an answer to this problem on and off for months. I reworded my question and finally came across your solution. Downloaded Orphaned Texts and hallelujah, I deleted 80 texts going back months. Thanks so much for your advice. I nearly bought a new phone. At least now when I do get a new phone I don’t need to worry about this problem happening again.

  2. I put the app on my phone but having trouble making it work. It says to make it a default but when I do it says make another messaging app default & restart orphan app. But it doesn’t work when I do that> It just sends me in a never ending circle of prompts that never works ~

Leave a comment