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.

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