/ / ¿TelephonyManager.getLine1Number () está fallando? - Android, número de teléfono

TelephonyManager.getLine1Number () falló? - android, número de teléfono

Quiero obtener el número de teléfono del dispositivo Android. Yo uso este código:

TelephonyManager tm = (TelephonyManager)this.getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);
String phoneNumber=  tm.getLine1Number();

En mi teléfono (HTC Wildfire) no puedo obtener el número de teléfono; todo lo que recibo es una cadena vacía. Si ejecuto el código en emulatur, normalmente se muestra el número de teléfono.

Si voy a Configuración => Acerca del teléfono => Identidad del teléfono-> Número de teléfono, el número de teléfono es "Desconocido".

¿Dónde está el problema? ¿Pasa algo con mi SIM?

Respuestas

35 para la respuesta № 1

Tuvimos el mismo problema en nuestro proyecto. La conclusión fue que depende de la tarjeta SIM.

Qué nos pasó:

  • Galaxy S con tarjeta SIM de AT&T: puede leer el número de teléfono, la configuración muestra el número
  • El mismo Galaxy con una tarjeta SIM europea: no puede leer el número y es "desconocido" en Configuración (el teléfono celular era perfectamente funcional, simplemente no podía leer el número)

Esto ha sido reportado en otros foros también.

Al final decidimos pedirle al usuario el número de teléfono. Un poco más involucrado, en realidad: if( "SIM card present" && "cannot read the cell number") "ask user"; . De lo contrario, seguiremos molestando al usuario que no tiene una tarjeta SIM en primer lugar.


11 para la respuesta № 2

En lugar del número de teléfono, use el número de serie de la tarjeta SIM, que siempre existe y siempre tiene un valor válido.

 telephonyManager.getSimSerialNumber();

El número de serie de la SIM es único dentro del operador al menos. Así que combinado con

 telephonyManager.getNetworkOperator();

tendrá un identificador único para un suscriptor dentro de un país.

Esto combinado con

 telephonyManager.getNetworkCountryIso();

tendrás un identificador único global para un suscriptor.

Espero que esto ayude

Aclamaciones.


5 para la respuesta № 3

La tarjeta SIM almacena el número de teléfono y se puede editarpor ti. No se puede decir de Android, pero en WM puede editar fácilmente su número de teléfono, que está almacenado en la tarjeta SIM. Por supuesto, esto no significa que pueda cambiar su número de teléfono sobre la marcha. En realidad, eres libre de escribir allí el número que quieras, y los programas creerán que este es tu número real :)


2 para la respuesta № 4

Cuando muevo una tarjeta SIM a un teléfono nuevo, a veces he encontrado que el número de teléfono no aparece en Configuración -> Acerca del teléfono -> Estado -> Mi número de teléfono.

Mis puntos de datos:

  • AT&T Atrix colocando una tarjeta SIM completamente nueva dice "Voz MSISDN Línea 1 nula".
  • T-Mobile G1, al colocar la nueva tarjeta SIM en ella, muestra correctamente el número de teléfono.
  • T-Mobile G2 mover la tarjeta SIM de mi antiguo G1 a dice "Desconocido".

0 para la respuesta № 5

Utilizo una tarjeta SIM que solo permite la transferencia de datos. No permite llamadas telefónicas.

Cuando trato de obtener número de teléfono con getLine1Number(), Me sale una cadena vacia


0 para la respuesta № 6

Número de teléfono disponible si la tarjeta SIM esle permite obtener el suyo. En nuestra empresa solo encontré una tarjeta SIM, que permite obtener un número. Estoy probando esta SIM en todos los dispositivos Android. Todo está bien. GetLine1Number () está bien. Ahora estoy buscando obtener un número de teléfono para otra SIM. He enviado sms a nuestro servidor sms u otro dispositivo Android (con el procesamiento de SMS)