Conseguir la dirección mac del teléfono

361 views
Skip to first unread message

Don Jesusito

unread,
Aug 23, 2010, 1:40:05 PM8/23/10
to android...@googlegroups.com
Hola a todos:

En una aplicación que estoy desarrollando necesito saber la dirección mac del terminal. Hasta ahora he conseguido el email, el número de teléfono, ... pero no la dirección mac. ¿Sabéis como obtenerla?

String textoMostrar =  "imei=" + tm.getDeviceId();
textoMostrar = "/n" + "telefono" + tm.getLine1Number();
textoMostrar = "/n" + "sim" + tm.getSimSerialNumber();

Gracias


Don Jesusito

unread,
Aug 23, 2010, 1:45:41 PM8/23/10
to android...@googlegroups.com
Upsss. Creía que getLine1Number() me devolvía el número de teléfono pero me devuelve un null, y también lo necesitaría.

Gracias.

Mauricio Montilla

unread,
Aug 23, 2010, 2:19:29 PM8/23/10
to android...@googlegroups.com
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

WifiManager wifiMan = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
        if (wifiMan!=null) {
            WifiInfo wifiInf = wifiMan.getConnectionInfo();
            if (wifiInf!=null) {
                String macAddr = wifiInf.getMacAddress();
                System.out.println(macAddr);
            }
        }

En el emulador te devolvera null ;-)

El día 23 de agosto de 2010 19:40, Don Jesusito
<donje...@gmail.com> escribió:

Don Jesusito

unread,
Aug 23, 2010, 3:26:14 PM8/23/10
to android...@googlegroups.com
Gracias Mauricio por tu respuesta, pero tengo una duda.

Yo pensaba que la dirección MAC erá única por dispositivo, es decir cada teléfono tiene su propia dirección MAC. Por el ejemplo que me has mandado este dato sólo lo puedo sacar si el teléfono está conectado por WIFI, en caso contrario no podría obtener la dirección MAC. ¿Es correcto?

Mauricio Montilla

unread,
Aug 23, 2010, 3:38:07 PM8/23/10
to android...@googlegroups.com
He hecho la prueba y a pesar de tener el wifi apagado he obtenido la
MAC de mi móvil.

No se si algún dia portaran el macchanger a android o si ya lo han
hecho, yo prefiria usar el IMEI para identificar plenamente el equipo.

Un saludo

El día 23 de agosto de 2010 21:26, Don Jesusito
<donje...@gmail.com> escribió:

Don Jesusito

unread,
Aug 23, 2010, 3:57:13 PM8/23/10
to android...@googlegroups.com
Hola Mauricio. Pues efectivamente, en las especificaciones del proyecto contemplábamos el imei para identificar el teléfono, pero con la aparición de los ipad (es una aplicación para iphone y para android) existe la posibilidad de que el dispositivo ipad no tenga ninguna tarjeta insertada y por lo tanto no pueda rescatar la dirección imei, por eso decidimos tirar de la dirección mac en vez de la imei.

Voy a probar tu código a ver que tal va.

Un saludo.

Don Jesusito

unread,
Aug 23, 2010, 4:27:05 PM8/23/10
to android...@googlegroups.com
Perfecto Maurico, ha funcionado a pesar de que no estaba conectado a la red WIFI. Muchas gracias por tu ayuda.

Un saludo.

luiX_

unread,
Aug 23, 2010, 5:07:13 PM8/23/10
to android...@googlegroups.com
Si la aplicación es para el iPad con conectividad 3G lo del IMEI te sigue valiendo, porque el IMEI depende del terminal, no de la tarjeta SIM ;)

German Viscuso

unread,
Aug 23, 2010, 6:27:36 PM8/23/10
to android-startup
Yo combinaría varios métodos y haria una especie de hash (si, soy paranoico =), incluido el ANDROID_ID (requiere cuenta Google registrada en el aparato).
Aqui tienen varios métodos, pueden cojer algunos y combinarlos en un solo numero:

De hecho, es un lindo proyecto para hacer, una librería que basado en varios métodos disponibles nos otorga un ID univoco.

Saludos!

German

2010/8/23 luiX_ <lui...@gmail.com>

Don Jesusito

unread,
Aug 24, 2010, 2:02:40 AM8/24/10
to android...@googlegroups.com
Gracias a todos por vuestra respuestas. De momento lo que me solicitaban era la mac para identificar el terminal, y eso ya lo he conseguido con vuestra ayuda. 

Ahora lo que necesito es el número de teléfono. Yo pensaba que con tm.getLine1Number() lo conseguía, pero me devuelve nulo. ¿Sabéis como puedo recoger el número?

Gracias.

Héctor

unread,
Aug 24, 2010, 3:28:11 AM8/24/10
to AndroidStartup
Pues por lo que parece, del ratillo que llevo buscando, esa es la
única forma, y a veces no funciona... De hecho, en la información de
mi Magic, no aparece el número de teléfono (así que si el propio SO no
puede... xDD)

Respecto a lo de la MAC, ¿el iPad no tiene algún código único asociado
como el android_id? La MAC va por dispositivo de red, si se diera el
caso de haber uno sin wifi, no habría MAC :S


On 24 ago, 08:02, Don Jesusito <donjesus...@gmail.com> wrote:
> Gracias a todos por vuestra respuestas. De momento lo que me solicitaban era
> la mac para identificar el terminal, y eso ya lo he conseguido con vuestra
> ayuda.
>
> Ahora lo que necesito es el número de teléfono. Yo pensaba que con
> tm.getLine1Number()
> lo conseguía, pero me devuelve nulo. ¿Sabéis como puedo recoger el número?
>
> Gracias.
>
> El 24 de agosto de 2010 00:27, German Viscuso <germanvisc...@gmail.com>escribió:
>
>
>
> > Yo combinaría varios métodos y haria una especie de hash (si, soy paranoico
> > =), incluido el ANDROID_ID (requiere cuenta Google registrada en el
> > aparato).
> > Aqui tienen varios métodos, pueden cojer algunos y combinarlos en un solo
> > numero:
> >http://www.heatxsink.com/entry/how-to-uniquely-identify-an-android-de...
> >http://strazzere.com/blog/?p=116
>
> >http://www.anddev.org/code-snippets-for-android-f33/how-to-uniquely-i...
>
> >http://stackoverflow.com/questions/2785485/is-there-a-unique-android-...
>
> > De hecho, es un lindo proyecto para hacer, una librería que basado en
> > varios métodos disponibles nos otorga un ID univoco.
>
> > Saludos!
>
> > German
>
> > 2010/8/23 luiX_ <lui...@gmail.com>
>
> > Si la aplicación es para el iPad con conectividad 3G lo del IMEI te sigue
> >> valiendo, porque el IMEI depende del terminal, no de la tarjeta SIM ;)
>
> >> El 23 de agosto de 2010 22:27, Don Jesusito <donjesus...@gmail.com>escribió:
>
> >> Perfecto Maurico, ha funcionado a pesar de que no estaba conectado a la
> >>> red WIFI. Muchas gracias por tu ayuda.
>
> >>> Un saludo.
>
> >>> El 23 de agosto de 2010 21:57, Don Jesusito <donjesus...@gmail.com>escribió:
>
> >>> Hola Mauricio. Pues efectivamente, en las especificaciones del proyecto
> >>>> contemplábamos el imei para identificar el teléfono, pero con la aparición
> >>>> de los ipad (es una aplicación para iphone y para android) existe la
> >>>> posibilidad de que el dispositivo ipad no tenga ninguna tarjeta insertada y
> >>>> por lo tanto no pueda rescatar la dirección imei, por eso decidimos tirar de
> >>>> la dirección mac en vez de la imei.
>
> >>>> Voy a probar tu código a ver que tal va.
>
> >>>> Un saludo.
>
> >>>> El 23 de agosto de 2010 21:38, Mauricio Montilla <
> >>>> mauriciomonti...@gmail.com> escribió:
>
> >>>> He hecho la prueba y a pesar de tener el wifi apagado he obtenido la
> >>>>> MAC de mi móvil.
>
> >>>>> No se si algún dia portaran el macchanger a android o si ya lo han
> >>>>> hecho, yo prefiria usar el IMEI para identificar plenamente el equipo.
>
> >>>>> Un saludo
>
> >>>>> El día 23 de agosto de 2010 21:26, Don Jesusito
> >>>>> <donjesus...@gmail.com> escribió:
> >>>>> > Gracias Mauricio por tu respuesta, pero tengo una duda.
> >>>>> > Yo pensaba que la dirección MAC erá única por dispositivo, es decir
> >>>>> cada
> >>>>> > teléfono tiene su propia dirección MAC. Por el ejemplo que me has
> >>>>> mandado
> >>>>> > este dato sólo lo puedo sacar si el teléfono está conectado por WIFI,
> >>>>> en
> >>>>> > caso contrario no podría obtener la dirección MAC. ¿Es correcto?
>
> >>>>> > El 23 de agosto de 2010 20:19, Mauricio Montilla
> >>>>> > <mauriciomonti...@gmail.com> escribió:
>
> >>>>> >> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"
> >>>>> />
>
> >>>>> >> WifiManager wifiMan = (WifiManager)
> >>>>> >> this.getSystemService(Context.WIFI_SERVICE);
> >>>>> >>         if (wifiMan!=null) {
> >>>>> >>             WifiInfo wifiInf = wifiMan.getConnectionInfo();
> >>>>> >>             if (wifiInf!=null) {
> >>>>> >>                 String macAddr = wifiInf.getMacAddress();
> >>>>> >>                 System.out.println(macAddr);
> >>>>> >>             }
> >>>>> >>         }
>
> >>>>> >> En el emulador te devolvera null ;-)
>
> >>>>> >> El día 23 de agosto de 2010 19:40, Don Jesusito
> >>>>> >> <donjesus...@gmail.com> escribió:

German Viscuso

unread,
Aug 24, 2010, 7:30:06 AM8/24/10
to android...@googlegroups.com
Hola!

Hay dos posibilidades si el numero de telefono obtenido con getLine1Number() en un dispositivo real viene nulo:

a) Tienes este bug: http://code.google.com/p/android/issues/detail?id=4339
b) El MSISDN de la tarjeta SIM esta vacío. Esto puedes verificarlo yendo a: Settings->About Phone->Status->My Phone Number y aparece como
"unknown". Lamentablemente el numero se extrae de allí por lo que la llamada getLine1Number() no es muy confiable.

Saludos!

German

2010/8/24 Héctor <hectorlope...@gmail.com>
Reply all
Reply to author
Forward
0 new messages