ProAndroidDev

The latest posts from Android Professionals and Google Developer Experts.

Follow publication

Android emulator: change your SIM card number

One of the biggest advantages of using the Android Emulator is that we can do almost everything as if we were on a physical device. Additionally, here we have a large set of configurations that allow us to replicate a large variety of configurations, namely: architectures, Android versions, hardware profiles, etc.

But what if we need to mock a SIM card?

If you create an AVD (Android Virtual Device) and go to the native settings application and look for your SIM information, you should see something identical to this:

Device properties (SIM card information, Android version)
Device information

If you look closely to the SIM number it seems to be a default number with +1 as the country code and a mix of random numbers. However, if we look closely the last four digits seem oddly familiarly.

If you enter on your console adb devices and assuming that you’ve got only one created you’ll see:

$adb devices
List of devices attached
emulator-5554 device

So, this last 4 four digits basically correspond to the port in which the emulator is connected… and the first ones… let's say that they are the default number used by Android:

static const char kDefaultPhonePrefix[] = “1555521”;

Device properties

In order to see all of your device (emulator) properties you can enter the following command:

adb shell getprop

And to filter the ones only related to the SIM card we just need to:

adb shell getprop | grep "gsm"

which returns:

[gsm.current.phone-type]: [1]
[gsm.defaultpdpcontext.active]: [true]
[gsm.network.type]: [LTE]
[gsm.operator.alpha]: [Android]
[gsm.operator.iso-country]: [us]
[gsm.operator.isroaming]: [false]
[gsm.operator.numeric]: [310260]
[gsm.sim.operator.alpha]: []
[gsm.sim.operator.iso-country]: [us]
[gsm.sim.operator.numeric]: [310260]
[gsm.sim.state]: [LOADED]
[gsm.version.baseband]: [1.0.0.0]
[gsm.version.ril-impl]: [android reference-ril 1.0]

It seems that there are some older emulators where you can define each one of these properties individually via setprop command:

adb shell setprop gsm.sim.operator.iso-country pt

Unfortunately, this seems to not work on the latest version of the emulator; so if it doesn’t we need to follow a second approach.

Change your SIM number

After a lot of try and error (a special thanks to Gonçalo Palaio here that grabbed his pickax and joined me on this quest), we’ve managed to discover an easy way to update the SIM number on the emulator.

1. First, you need to check if you’ve got the ANDROID_HOME path defined:

echo $ANDROID_HOME

It should print your Android SDK path:

/Users/$(whoami)/Library/Android/sdk

In case you don’t have your ANDROID_HOME defined you’ll need to set it. First, you need to find where your Android SDK folder is located. You can easily check this by opening Android Studio and after selecting your project right click on “Open Module Settings” and then on the left bar select on “SDK Location”.

After copying it, open a new console and type:

export ANDROID_HOME=<your_sdk_path>

And then add it to the environment variables PATH:

export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

and save it (so you don’t need to enter these commands every time you open a new console):

source ~/.bash_profile

2. Next, we will set the EMULATOR variable as well as we did for the ANDROID_HOME :

export EMULATOR=$ANDROID_HOME/emulator

and then export the LD_LIBARY_PATH

export LD_LIBRARY_PATH=$EMULATOR/lib64:$EMULATOR/lib64/qt/lib

3. Now you just need to set the phone_number option with the phone number that you want to use on the emulator:

$EMULATOR//qemu/darwin-x86_64/qemu-system-x86_64 -avd <your_avd_name> -phone-number 351990000001

In order to get <your_avd_name> you’ll need to see all the AVD’s available:

emulator -list-avds

In my case, it will output Pixel_2_API_Q, so my command will be:

$EMULATOR//qemu/darwin-x86_64/qemu-system-x86_64 -avd Pixel_2_API_Q -phone-number 351990000001

No need to add the “+” or “00” for the country code, Android will do that automatically for you.

Device properties with the newly changed phone number
Device properties (new phone number)

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Published in ProAndroidDev

The latest posts from Android Professionals and Google Developer Experts.

Written by Carlos Mota

👨‍💻, 🔭🌖, 🗺, 📸, 🏃‍💨, 🇵🇹, 🖖 - is this how I should use emojis? Also: https://www.cafonsomota.xyz/

Responses (11)

Write a response