12

I am using the code

TelephonyManager tMgr =(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
  mPhoneNumber = tMgr.getLine1Number();

to get the phone no programatically in android . But this is working fine only for one sim card. If i test this code by inserting other sim card, it is giving null. I am trying to find the solution for this. please help me. I have also included READ_PHONE_STATE permission in Manifest.

I want to uniquely identify the sim card. IS there any other way to do this. please let me know.

Cœur
  • 37,241
  • 25
  • 195
  • 267
Prabhu M
  • 3,534
  • 8
  • 48
  • 87

4 Answers4

8

I think Sim serial Number is unique. You can try this.

TelephonyManager telemamanger = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String getSimSerialNumber = telemamanger.getSimSerialNumber();

Let me know if there is any issue.

Sandip Jadhav
  • 7,377
  • 8
  • 44
  • 76
Maidul
  • 1,289
  • 16
  • 30
1

With API Level greater than or equal to 22 : You can access all the SIM details using SubscritionManager. Use following command to list all Sim numbers(Works well for Dual Sim also):

List<SubscriptionInfo> list = SubscriptionManager.from(getApplicationContext()).getActiveSubscriptionInfoList();
for(SubscriptionInfo s : list){
   Log.d("SIMMANAGER",s.getNumber());
}

Note : This only works well when the operator stored their mobile number in sim card. Else, this method returns null.

1

This is a known issue. Many SIM across the globe would return null. You should rather use IMEI number however even that can return null.

TelephonyManager.getDeviceId()
PravinCG
  • 7,688
  • 3
  • 30
  • 55
1

Look for TelephonyManager.getSubscriberId(), this will give the unique id for each SIM.

Sukumar
  • 1,303
  • 10
  • 15
  • 1
    Hey, TelephonyManager.getSubscriberId() gives same id for two different sims of same network. I am using serial number of sim to uniquely identify sim – Prabhu M May 10 '11 at 11:26
  • No, getSubscriberId return you unique IMSI value for GSM phone, even if you have two different sims of same network. Check this http://developer.android.com/reference/android/telephony/TelephonyManager.html#getSubscriberId%28%29 – Sukumar May 10 '11 at 12:18
  • 1
    On some phones or networks only the first 6 digits of the 15-digit subscriber id is returned. – Ralf Oct 25 '11 at 11:59