I've recently moved to the Geneva area on the border between France and Switzerland. I live in France where I have a French mobile (and home) phone contract, but work just over the border (within a mile of it!) in Switzerland.
The Swiss networks are stronger near my work than French ones, but I can usually get a French signal. I can use several French networks without incurring roaming charges for phone/SMS/internet use, but any of the Swiss ones will cost me a small fortune.
In Android (actually Cyanogenmod versions based on Gingerbread and ICS is what I've tried so far so far) I seem to have two options:
a) Only allow to join my home network and ignore all others, both French and Swiss. In this case I often have no connection at all.
b) Connect to any network, in which case the phone will often choose to connect to a Swiss network and hence incur costs. (And in practice will render me unable to use the mobile data connection since I've disabled data roaming).
Is there a way that I can rank networks in order of preference so that French networks (if joinable) will be preferred to Swiss ones, even if there are Swiss networks with a stronger signal? I've looked for settings and apps to do this, but without success... other than some rather dangerous looking stuff with the Preferred Roaming List (PRL), which doesn't seem to be exposed to the normal UI.
I guess most people don't live/work on borders so this feature hasn't been that much in demand -- but the network operators unfortunately don't have any cross-country deals to help frontier-dwellers either, so a technological solution is probably needed!