Android: Obtener número de teléfono

[bs_notification type=»warning» dismissible=»false»]Desde hace unas cuantas versiones, Whatsapp ya no sirve para esto.[/bs_notification]

Por motivos que no conozco (intuyo que por seguridad, y no me parece mal), no es posible saber el número de teléfono del usuario utilizando el SDK de Android. He oído que en algunas versiones, con algunos operadores de red o en algunos países sí, pero es una combinación extraña con la que no se puede contar. Hay otro recurso más fiable, aunque tampoco lo sea al 100%, pero es importante tenerlo en cuenta ya que para muchas situaciones sería suficiente.

Forma fiable al 100%, no existe. Hay que ser consciente de eso. Si fuera posible, el mismo Whatsapp no necesitaría que el usuario introduzca y confirme el número. Y precisamente con Whatsapp tiene que ver este pequeño truco.

Se trata de acceder a la lista de cuentas del usuario. Con la clase Account Manager se puede hacer. Si el usuario tiene Whatsapp instalado aparecerá ahí y podremos obtener el nombre de usuario, que és precisamente el número de teléfono, con prefijo uncluído.

En el AndroidManifest.xml:

<uses-permission android:name="android.permission.GET_ACCOUNTS" />

El método:

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

ArrayList googleAccounts = new ArrayList();
for (Account ac : accounts) {
    String acname = ac.name;
    String actype = ac.type;

    System.out.println("Accounts : " + acname + ", " + actype);
    if(actype.equals("com.whatsapp")){
        String phoneNumber = ac.name;
    }
}

La idea no es mía, es de un usuario que respondió a la pregunta en Stackoverflow.

Para cualquier situación que necesite tener el número con mayor fiabilidad, será necesario preparar un sistema donde el usuario indique manualmente el número de teléfono y se verifique a través de algún método que implique a la propia tarjeta SIM, como un SMS con un código de verificación.

Comentarios (2)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.