简体   繁体   中英

How to get both phone number from dual SIM device?

I know how to get user's phone number, but let's say the user's phone is dual SIM. Is there any way to get both phone numbers? Currently I am getting the active phone number only.

If the phone number is indeed stored in the SIM card, then you can use subscriptionmanager API ( https://developer.android.com/reference/android/telephony/SubscriptionManager.html ) to get the details on each subscription ie for each SIM card.

You can call

Please note that for this to work, the SIM card should have the phone number in it.

Please note this API is only supported from API level 22

Adding example code :

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP_MR1) {
            SubscriptionManager subscriptionManager = SubscriptionManager.from(getApplicationContext());
            List<SubscriptionInfo> subsInfoList = subscriptionManager.getActiveSubscriptionInfoList();

            Log.d("Test", "Current list = " + subsInfoList);

            for (SubscriptionInfo subscriptionInfo : subsInfoList) {

                String number = subscriptionInfo.getNumber();

                Log.d("Test", " Number is  " + number);
            }
        }

I have Kotlinized @manishg code (from 5 years ago):

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
    val subscriptionManager = SubscriptionManager.from(applicationContext)
    val subsInfoList = subscriptionManager.activeSubscriptionInfoList
    Log.d("Test", "Current list = $subsInfoList")
    for (subscriptionInfo in subsInfoList) {
        val number = subscriptionInfo.number
        Log.d("Test", " Number is  $number")
    }
}

Note #1: you must add to the manifest:

uses-permission android:name="android.permission.READ_PHONE_STATE"

Note #2: you should have a permission check on your code, like:

  val subsInfoList = if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
                        //    ActivityCompat#requestPermissions
        return
    } else {
        //todo return "no permissions"
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM