2009-04-14 14 views
6

primer póster aquí.Ejecutando varios emuladores de Android con diferentes números de teléfono

Estoy trabajando en una aplicación de Android cliente-servidor y tratando de averiguar cómo identificar diferentes teléfonos/usuarios para el servidor sin ambigüedades. Mi primer intento sería usar el número de teléfono en la tarjeta SIM. Aunque ahora que lo pienso, ¿qué tan común es estos días que su número de teléfono cambia cuando, por ejemplo, cambiar de portador? Supongo que depende de un país a otro, etc.

De todos modos, he estado tratando de descubrir, dado que no tengo teléfonos Android reales, cómo cambiar el número de teléfono del teléfono emulador para simular diferentes usuarios. ¿Es posible o debería solo pensar en formas alternativas de identificación?

Respuesta

5

El android_id se supone que identificar de forma exclusiva el dispositivo, sin embargo, se ha señalado que el ID se puede cambiar si se sabe cómo Spoofing android_id

import android.provider.Settings.System; 

String android_id = System.getString(this.getContentResolver(), System.ANDROID_ID); 

En el emulador, el android_id no tiene un valor, por lo que tendrá que poner una rutina de depuración para asignar un valor usted mismo.

Sin embargo, si desea identificar al usuario y dejar que el usuario acceda a su servicio desde diferentes dispositivos con una identificación de usuario, es mejor que le asigne una identificación de usuario y los autentique en su servicio utilizando esta identificación de usuario como su credencial. Esto les permitiría usar sus identificaciones en muchos dispositivos diferentes, a menos que lo haya usado junto con el android_id (y el android_id no se haya falsificado), entonces podría limitarlos a un dispositivo.

+0

Gracias, el android_id era algo así como lo que estaba buscando. Sin embargo, después de leer el resto de su respuesta y pensar más sobre ella, me di cuenta de que no quería vincular el servicio estrictamente a un dispositivo. – Janne

+0

Ahora está en desuso y puede usar ANDROID_ID definido en Settings.Secure: String id = System.getString (this.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID); – Gaket

3

Debe usar el número que presenta el emulador. P.ej. por lo general, el primer emulador que se ejecuta tiene el número 5554, el segundo 5555, y así sucesivamente.

Puede usar estos números para hacer llamadas, enviar mensajes de texto desde el emulador al emulador. Esto, creo, simula diferentes números/usuarios para sus propósitos.

+0

Esa es una buena idea. ¿Hay alguna forma de obtener el número del emulador programáticamente? – Janne

1

La información de la tarjeta SIM está codificada en el emulador-brazo y el emulador-x86 binarios. El cambio del número de teléfono (MSISDN) se detalla al final de esta publicación de blog: new link, web archive

La tarjeta SIM almacena el número de teléfono con cada 2 dígitos intercambiados. Entonces (los primeros 7 del número de teléfono) 1555521 se convierte en 515525%d1 en el binario. Aunque es un poco tedioso, parchándolo para cada prueba no es el fin del mundo. También se podría usar sed:

cd path/to/android-sdk-linux/tools/ 
cp emulator-arm emulator-arm.backup 
sed -i 's/515525%d1/816745%d3/g' emulator-arm 

que cambiará el número de 1-876-543- [Número de puerto]. Detalles sobre por qué están en la publicación de blog vinculada.

Cuestiones relacionadas