¿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?
- Eliminar contorno de derivación del elemento de anclaje en el dispositivo Android visto con Firefox móvil
- Campo de entrada HTML: muestra automáticamente el método de entrada numérica
- Bluetooth - Dispositivos de clase 1?
- Evento Javascript para el lanzamiento del navegador móvil o dispositivo despertador
- JQuery - Permitir teclado Autoshow en móvil
- Android query failed com.android.internal.telephonyCommandException RADIO_NOT_AVAILABLE
- Bluetooth LAN entre teléfonos inteligentes? ¿Conexiones telefónicas de uno a muchos?
- La geolocalización del teléfono no funciona
- ¿Cuáles son las diferencias entre T-Mobile G1 (marca HTC Dream) y ADP1 de Google (dispositivo para desarrolladores)?
- Las etiquetas de aceptación y captura de archivos fallan en la vista web de cruce de peatones
- Android ignora la escala máxima al usar meta-tag de viewport de ancho fijo
- ¿Cómo crear un enlace para todos los dispositivos móviles que abre google maps con una ruta que empieza en la ubicación actual, destinando un lugar determinado?
- Perfomance de red móvil: ¿Cuál sería el tipo de datos más eficiente para transferir datos de un servidor web a un teléfono móvil?
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.
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); }
- Com.android.ddmlib.SyncException: Demasiados archivos abiertos
- Adición de una fuente personalizada al tema en Android