I have searched for this solution myself for years. Only until recently have I figured out how to do this. Unfortunately, I don't think there is a way to do it on stock Android. You have to be rooted to get anywhere. If you're not rooted and want to be I would suggest going over to the
XDA Forums and searching for your device. If your one of the lucky ones there might be a nice easy guide and/or toolkit to help you get rooted. Perhaps some manufacturers' Android skins add this functionality, but for the purposes of this thread I'm talking AOSP
But first, let me explain why some people might want this option we're discussing here: the option to turn off data yet still receive MMS messages. I say "some people" because this clearly isn't a big enough feature request to warrant an obvious solution. When we're asking for this feature we know we are asking for something abnormal. We know data and smart phones go hand-in-hand. But, we are using them differently. We know that. So please don't belittle. We are not asking Google to add this feature, just wondering if there is a way to make it happen.
The first reason to want this is to save data, by turning it off, on a small data plan (200mb etc.) and still get MMS automatically.
Secondly, in my case, I love smartphones but my budget doesn't allow for a data plan, even with how cheap they are now. I have an unlocked Galaxy Nexus I still want to use. I can simply turn data off in the settings but then I won't receive MMS messages, which sometimes can be text messages people write on an iPhone that are converted to MMS. This is why I just want my data connection for MMS. I don't get charged for MMS data. It's part of my texting package. Most old "dumb phones" did this. They would turn on a data connection just to download an MMS. This is what we're looking for. Sadly the only workarounds I have found for Android as follows...
There are a couple of options, both requiring root:
1. Download and flash the latest version of
MIUI. It is one of the only ROMs I have found that has the option to turn off data yet still receive MMS (Anyone know of any others?). You can find the option in the settings under "Mobile Networks".
2. Install
Android Firewall from the Play Store to specify, app by app, what kind of connection it can use. In my case I let
all apps use WiFi and only
Messaging can use the Data connection. You should be able to use this app on all rooted Android 4.0+. Make sure to check "Enable Firewall" in the settings drop down after you make all of your selections. If you're running something
pre Android 4.0 it looks like
DroidWall will do the same thing.
I know this is long winded but I have been searching this topic for years. Hopefully this can help someone.