2010-07-04 10 views
2

Utiliser mon nouveau téléphone Android a établi un petit problème: Je vis dans le pays A, mais mon fournisseur de téléphonie mobile est du pays B, parce que c'est juste moins cher. Concernant les tarifs de téléphonie mobile, mon pays n'est pas un pays étranger pour le pays B. Cependant, je dois activer l'itinérance de données dans mon téléphone Android. Le problème est que je suis aussi souvent dans le pays C et chaque fois que je dois désactiver l'itinérance des données. J'ai donc pensé à écrire une petite application qui désactive l'itinérance des données si je ne suis pas dans le pays A ou B et l'autorise autrement. Mon premier essai a été de définir l'emplacement en utilisant le GPS, mais cela est plutôt inutile, car je devrais calculer pour chaque coordonnée si elle est dans la plage autorisée. Donc, je pense que la meilleure solution serait de lire à partir du téléphone le fournisseur actuel et si ce fournisseur n'est pas dans la liste blanche (qui est définie par moi), l'itinérance des données est désactivée.Lire le fournisseur de téléphonie mobile à partir du téléphone

Connaissez-vous d'autres approches? Et comment pourrais-je obtenir le nom du fournisseur actuel? Et comment désactiver par programme l'itinérance des données?

Répondre

5

Vous pouvez utiliser TelephonyManager:

TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 

Certaines de ses méthodes qui pourraient être utiles pour votre cas:

tm.getNetworkCountryIso(); 
tm.getNetworkOperator(); 
tm.getNetworkOperatorName(); 
tm.getSimCountryIso(); 
tm.getSimOperator(); 
tm.getSimOperatorName(); 
1

Pouvez-vous utiliser le géocodage inverse? Quelque chose comme Nominatim? Il suffit d'envoyer les coordonnées GPS et de vérifier le pays dans lequel vous vous trouvez.

D'autre part, this example vous montre comment vous pouvez obtenir le nom de l'opérateur auquel votre téléphone est actuellement connecté. A propos de diabling l'itinérance de données, il semble que la saisie de détails APN invalide fait l'affaire.

+0

Android a des aides de géocodage voir ce http://developer.android.com encastrables /intl/de/reference/android/location/Geocoder.html – Pentium10

+0

J'ai pensé à ça, et ce serait vraiment bien, mais le problème est que je dois toujours avoir activé le récepteur GPS. Pour diverses raisons, je ne le veux pas. – RoflcoptrException

+0

Vous n'avez pas besoin d'avoir GPS activé, vous pouvez obtenir des coordonnées de votre réseau ou WIFI. –

Questions connexes