Comment obtenez-vous le MCC et le MNC du téléphone dans Android?

La seule façon que j'ai trouvée de récupérer MCC et MNC est en remplaçant la méthode onConfigurationChanged d'une activité, en tant que telle:

public void onConfigurationChanged(Configuration config) { super.onConfigurationChanged(config); DeviceData.MCC = "" + config.mcc; DeviceData.MNC = "" +config.mnc; } 

Cependant, j'ai besoin de ces données dès que l'application démarre et que l'utilisateur ne peut pas attendre pour activer l'orientation du téléphone ou l'équivalent pour déclencher cette méthode. Existe-t-il un meilleur moyen d'accéder à l'objet Configuration actuel?

  • Android Studio - Impossible d'appliquer le plugin
  • Réception du flux RTP - AudioStream, AudioGroup
  • Make Recycler Voir afficher les lignes du bas
  • Cycle de vie de l'activité Android - à quoi servent toutes ces méthodes?
  • Progress Dialog apparaît de façon étrange sur les appareils Pre-Lollipop
  • Modifier le texte et l'action du bouton - développement Android
  • 7 Solutions collect form web for “Comment obtenez-vous le MCC et le MNC du téléphone dans Android?”

    The TelephonyManager a une méthode pour renvoyer MCC + MNC en tant que chaîne ( getNetworkOperator () ) qui vous fera ce que vous voulez. Vous pouvez y accéder via:

     protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TelephonyManager tel = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); String networkOperator = tel.getNetworkOperator(); if (!TextUtils.isEmpty(networkOperator)) { int mcc = Integer.parseInt(networkOperator.substring(0, 3)); int mnc = Integer.parseInt(networkOperator.substring(3)); } } 

    Vous savez qu'il existe deux MCC / MNC pour un téléphone actif? (L'un est le code du pays et l'ID du transporteur pour la carte Sim, l'autre est pour le réseau / la tour de cellule utilisée).

    Si getResources().getConfiguration().mcc n'est pas vide en mode avion, c'est la valeur Sim TelephonyManager.getSimOperator() , pas la valeur de la tower TelephonyManager.getNetworkOperator() .

    Je ne sais pas ce que l'OP veut, mais la réponse 3 lui donnera des résultats différents de son code d'origine si la getConfiguration est vraiment la valeur Sim .

    Vous pouvez accéder à la configuration actuelle par getResources().getConfiguration() fait l'affaire.

    getResources().getConfiguration().mcc est un mauvais choix car il renvoie un entier, compromettant ainsi des valeurs valides telles que 01 ou 044 . De toute évidence, l'entier n'est pas une bonne option pour cela.

    Voir les détails dans Mobile_Network_Code

    Mise à jour: en Australie, nous avons vérifié un cas incorrect ici. Le getNetworkOperator renvoie une valeur différente de getSimOperator , où ce dernier est correct.

    Voir les détails dans Android doc: TelephonyManager

    J'ai découvert que l'opérateur de réseau peut parfois être comme 65@5 lorsqu'il n'est pas connecté à l'opérateur (service indisponible), même s'il existe une carte SIM insérée. Cela s'est produit sur Samsung S2 exécutant Android 4.1.2.

    Entrez la description de l'image ici

    Il faut donc faire attention lors de la conversion en Int.

      int mcc = Integer.parseInt(networkOperator.substring(0, 3)); 

    D'accord, il s'avère que getResources (). GetConfiguration (). Le mcc trick est probablement mieux pour la plupart des buts, car avec l'autre si la personne met son téléphone en mode avion ou utilise autrement Wi-Fi, il retourne un vide MCC.

    Ceci est mis à jour. utilisez ceci

      TelephonyManager tel = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); String networkOperator = tel.getSimOperator(); System.out.println("************mnc,mcc"+networkOperator); if (!TextUtils.isEmpty(networkOperator)) { mcc = networkOperator.substring(0, 3); mnc = networkOperator.substring(3);System.out.println("************mnc,mcc"+mnc+mcc); }mnc_mcc.setText("************mnc,mcc"+mnc+","+mcc); } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.