¿Cómo obtienes MCC y MNC del teléfono en Android?

La única manera que he encontrado de recuperar MCC y MNC es sobreescribir el método onConfigurationChanged de una actividad, como tal:

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

Sin embargo, necesito estos datos tan pronto como se inicie la aplicación y no puedo esperar a que el usuario cambie la orientación del teléfono o equivalente para activar este método. ¿Existe una mejor manera de acceder al objeto Configuración actual?

El TelephonyManager tiene un método para devolver el MCC + MNC como String ( getNetworkOperator () ) que le hará lo que quiera. Puede acceder a él a través de:

 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)); } } 

¿Sabe que hay dos MCC / MNC para un teléfono activo? (Uno es el código del país y el identificador del transportista para la tarjeta SIM, el otro es para la torre de red / celda en uso).

Si getResources().getConfiguration().mcc no está vacía en modo avión, es el valor Sim TelephonyManager.getSimOperator() , no el valor tower TelephonyManager.getNetworkOperator() .

No sé qué OP quiere, pero la respuesta 3 le dará diferentes resultados que su código original si la getConfiguration es realmente los valores de Sim .

Puede obtener acceso a la configuración actual mediante getResources().getConfiguration() hace el truco.

getResources().getConfiguration().mcc es una mala opción porque devuelve un entero, por lo tanto compromete valores válidos como 01 o 044 . Claramente entero no es una buena opción para esto.

Ver detalles en Mobile_Network_Code

Actualización: en Australia, hemos verificado un caso equivocado aquí. getNetworkOperator devuelve un valor diferente de getSimOperator , donde este último es correcto.

Ver detalles en Android doc: TelephonyManager

Me enteré de que el operador de red a veces puede ser como 65@5 cuando no está conectado al operador (servicio no disponible), incluso si hay una tarjeta SIM insertada. Esto sucedió en Samsung S2 con Android 4.1.2.

Introduzca aquí la descripción de la imagen

Así que tienes que tener cuidado al convertir a Int.

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

Bueno, resulta que el truco getResources (). GetConfiguration () .mcc es probablemente mejor para la mayoría de los propósitos, porque con el otro si la persona pone su teléfono en modo avión o usa Wi-Fi, entonces devuelve un mensaje vacío MCC.

Esto se actualiza. utilizar esta

  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); } 
  • ¿Cómo generar enlace waze meetup con fallback web?
  • Convierta HTML5 en una aplicación independiente de Android
  • ¿Es la mejor práctica para subir archivos a CDN mientras desarrolla aplicaciones móviles?
  • Abrir el menú de ServiceMode por programa en Android
  • Desarrollo de Android C ++ con Visual Studio
  • Cómo detectar el usuario manual que sostiene su dispositivo
  • Detectar la compatibilidad con la entrada de archivos del navegador
  • Jquery móvil - valor de visualización en teléfonos android
  • ¿Cómo funciona la autenticación de WhatsApp?
  • Android / javascript - problema con window.innerWidth y window orientationEvent disparando en el momento adecuado
  • ¿Utilizando appMobi puedo crear aplicaciones para Android y aplicaciones para iPhone de forma gratuita (además de los costos de Google / Apple)?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.