Simonas Balcius
Simonas Balcius

Reputation: 31

Getting SIM serial number in Android

I need to make sure the SIM card can be used without entering pin in designated device(s), but it must be required in other devices. (Devices in use are rooted, application is installed as system app)

What I want is to identify a SIM card, and enter the pin programmatically, if one is already known/saved.

I am able to enter the known pin code, when one is required, but I have a problem with SIM identification.

I found out that I am not able to get SIM serial number or subscriber id before the correct PIN is entered.

The method I am using (with permissions and etc.):

TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
telephonyManager.getSimSerialNumber();

The thing is, this method returns null, if pin is required and not yet entered.

My question is if there is some kind of workaround for this. Is it possible at all? Is there another approach?

Ideas and approaches appreciated. Thanks in advance.

Upvotes: 2

Views: 11436

Answers (1)

Abhishek Dey
Abhishek Dey

Reputation: 1639

TelephonyManager tm = (TelephonyManager) 
                getSystemService(Context.TELEPHONY_SERVICE);
}
String simID = tm.getSimSerialNumber();
String telNumber = tm.getLine1Number();
String IMEI = tm.getDeviceId();

Permission:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

Your issue:

The phone number returned is whatever is stored on the SIM card's MSISDN, which is not filled by some operators. Try Airtel, Vodafone if in India.

Upvotes: 1

Related Questions