Those of you using MVNOs (mobile virtual network operators, e.g. budget brands of big networks) probably know that you need to enable data roaming to get the data connection to work (unless specific RIL libs exist like for Saunalahti). This is quite annoying when you travel abroad, because you need to disable it manually to avoid expensive roaming bills.
CyanogenMod has a useful feature called "national roaming", which enables roaming to all providers in one's home country, while disabling it internationally. Unfortunately, such a thing doesn't exist in standard Android builds. Since I'm going to need it next week, I hacked framework.jar to work the same way as CyanogenMod's national roaming. I tested it with a foreign SIM and it does indeed work.
This should be compatible with the following ROMs:
Ginger Stir Fry
GingerLeak
Swedish Spring
Japanese Jellyfish
FLB Froyo
If you're using a ROM based on any of these, chances are it will work too, since the only relevant file is framework.jar. Trying it doesn't hurt, since it compares the MD5 checksum before changing anything. It also doesn't matter if your phone is Gen1 or Gen2. Porting this to other ROMs is a five minute job, so just ask me and I'll add them.
BIG FAT WARNING: In some countries (USA IIRC, maybe others), some operators let you roam onto their networks even at home. So don't install this unless you know you can safely (and need to, otherwise it's useless) enable roaming at home without incurring any additional costs!
Download here:
http://www.multiupload.com/FJX94XCC13
You don't need to download the attachment to this post if you just want to use it.
If you're interested in how it works, I'm patching isRoamingBetweenOperators() in the GsmServiceStateTracker class to rely on the MCC only and ignore the carrier name. I've attached the patch so you can port it yourself using smali/baksmali.
Click to expand...