2009-04-14 6 views
6

Affiche de première fois ici.Exécution de plusieurs émulateurs Android avec différents numéros de téléphone

Je travaille sur une application Android client-serveur et essaie de comprendre comment identifier différents téléphones/utilisateurs sur le serveur sans ambiguïté. Ma première tentative serait d'utiliser le numéro de téléphone sur la carte SIM. Bien que maintenant que j'y pense, quel est le point commun de nos jours que votre numéro de téléphone change lorsque vous p. changer de transporteur? Je suppose que cela dépend de pays à pays, etc

Quoi qu'il en soit, j'ai essayé de comprendre, puisque je n'ai pas de téléphones Android réels, comment changer le numéro de téléphone du téléphone émulateur pour simuler différents utilisateurs. Est-ce possible ou devrais-je simplement penser à d'autres moyens d'identification?

Répondre

5

Le android_id est censé identifier de manière unique le dispositif, cependant, il a été noté que l'identifiant peut être modifié si vous savez comment Spoofing android_id

import android.provider.Settings.System; 

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

Dans l'émulateur, le android_id n'a pas de valeur, Vous devrez donc mettre une routine de débogage pour attribuer vous-même une valeur. Toutefois, si vous souhaitez identifier l'utilisateur et laisser l'utilisateur accéder à votre service depuis différents périphériques avec un identifiant utilisateur, il est préférable de lui attribuer un identifiant utilisateur et de l'authentifier auprès de votre service en utilisant cet identifiant utilisateur comme informations d'identification. Cela leur permettrait d'utiliser leurs identifiants sur de nombreux périphériques différents, sauf si vous l'avez utilisé en conjonction avec le android_id (et le android_id n'a pas été usurpé) alors vous pouvez les limiter à un seul périphérique.

+0

Merci, l'android_id était en quelque sorte ce que je cherchais. Cependant, après avoir lu le reste de votre réponse et réfléchi plus à ce sujet, j'ai réalisé que je ne voulais pas lier le service strictement à un seul appareil. – Janne

+0

Maintenant, il est obsolète et vous pouvez utiliser ANDROID_ID défini dans Settings.Secure: String id = System.getString (this.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID); – Gaket

3

Vous devez utiliser le nombre présent par l'émulateur. Par exemple. Généralement, le premier émulateur en cours d'exécution porte le numéro 5554, le second 5555 et ainsi de suite.

Vous pouvez utiliser ces numéros pour faire des appels, envoyer des messages texte de l'émulateur à l'émulateur. Ceci, je pense, simule différents nombres/utilisateurs pour vos buts.

+0

C'est une bonne idée. Existe-t-il un moyen d'obtenir le numéro de l'émulateur par programme? – Janne

1

Les informations de la carte SIM sont codées en dur dans les fichiers binaires emulator-arm et emulator-x86. La modification du numéro de téléphone (MSISDN) est détaillée à la fin de ce billet de blog: new link, web archive

La carte SIM stocke le numéro de téléphone avec chaque changement de 2 chiffres. Donc (le premier 7 du numéro de téléphone) 1555521 devient 515525%d1 dans le binaire. Bien qu'un peu fastidieux, le patcher pour chaque test n'est pas la fin du monde. Vous pouvez également utiliser sed:

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

Cela changera le numéro en 1-876-543- [NUMÉRO DE PORT]. Détails sur pourquoi sont dans l'article de blog lié.

Questions connexes