Saltar al contenido

Obtener programáticamente el número de teléfono del teléfono Android

Este dilema se puede tratar de diferentes maneras, pero nosotros te enseñamos la respuesta más completa en nuestra opinión.

Solución:

Código:

TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();

Permiso requerido:

 

Advertencias:

De acuerdo con los comentarios altamente votados, hay algunas advertencias a tener en cuenta. esto puede volver null o "" o incluso "???????"y puede devolver un número de teléfono obsoleto que ya no es válido. Si desea algo que identifique de forma única el dispositivo, debe utilizar getDeviceId() en cambio.

No existe una solución garantizada para este problema porque el número de teléfono no se almacena físicamente en todas las tarjetas SIM ni se transmite desde la red al teléfono. esto es especialmente true en algunos países, lo que requiere la verificación de la dirección física, y la asignación de números solo ocurre después. La asignación de números de teléfono ocurre en la red, y se puede cambiar sin cambiar la tarjeta SIM o el dispositivo (por ejemplo, así es como se admite la portabilidad).

Sé que es doloroso, pero lo más probable es que la mejor solución sea simplemente pedirle al usuario que ingrese su número de teléfono una vez y lo guarde.

Actualización: esta respuesta ya no está disponible porque Whatsapp dejó de mostrar el número de teléfono como nombre de cuenta, por favor ignore esta respuesta.

En realidad, existe una solución alternativa que quizás desee considerar, si no puede obtenerla a través del servicio de telefonía.

A partir de hoy, puede confiar en otra gran aplicación Whatsapp, usando AccountManager. Millones de dispositivos tienen esta aplicación instalada y si no puede obtener el número de teléfono a través de TelephonyManagerpuede intentarlo.

Permiso:


Código:

AccountManager am = AccountManager.get(this);
Account[] accounts = am.getAccounts();

for (Account ac : accounts) 
    String acname = ac.name;
    String actype = ac.type;
    // Take your time to look at all available accounts
    System.out.println("Accounts : " + acname + ", " + actype);

Controlar actype para la cuenta de WhatsApp

if(actype.equals("com.whatsapp"))
    String phoneNumber = ac.name;

Por supuesto, es posible que no lo obtenga si el usuario no instaló WhatsApp, pero vale la pena intentarlo de todos modos. Y recuerda que siempre debes pedir confirmación al usuario.

Comentarios y calificaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada.