Обнаружение статуса двух SIM-карт в телефоне с двумя SIM-картами

Я хочу определить, есть ли две SIM-карты в моем телефоне с двумя SIM-картами программно. Я нашел один API ( TelephonyManager.getSIMState() ), но он предназначен для обычных телефонов с одной SIM-картой. Существуют ли какие-либо API-интерфейсы для определения наличия или отсутствия двух SIM-карт в моем телефоне с двумя SIM-картами?

    4 Solutions collect form web for “Обнаружение статуса двух SIM-карт в телефоне с двумя SIM-картами”

    Android не поддерживает несколько SIM-карт, по крайней мере, из SDK. Производители устройств, которые создали устройства с несколькими SIM-картами, делают это самостоятельно. Вы можете связаться с производителем вашего устройства и посмотреть, есть ли у них SDK-надстройка или что-то, что позволяет вам получить доступ ко второй SIM-карте.

    Редактировать: (15 июля 2015 г.)

    С API 22 вы можете проверить наличие нескольких SIM- getActiveSubscriptionInfoList() используя метод getActiveSubscriptionInfoList() . Подробнее об Android Docs .

    С сегодняшнего дня, если на телефоне включен MTK, вы можете использовать class TelephonyManagerEx из MediaTek SDK.

    Взгляните на документы .

    Ну, это не дурацкое доказательство. Но если у вас две SIM-карты, которые находятся на двух разных сетевых операторах, вы можете попробовать что-то вроде этого:

     PhoneServiceStateListener listener = new PhoneServiceStateListener(this); tm.listen(listener, PhoneStateListener.LISTEN_SERVICE_STATE); . . . class PhoneServiceStateListener extends PhoneStateListener { Context context = null; public PhoneServiceStateListener(Context context) { this.context = context; } public PhoneServiceStateListener() { } @Override public void onServiceStateChanged(ServiceState serviceState) { if (serviceState.getState() == ServiceState.STATE_IN_SERVICE) { //You get this event when your SIM is in service. //If you get this event twice, chances are more that your phone is Dual SIM. //Alternatively, you can toggle Flight Mode programmatically twice so //that you'll get service state changed event. } super.onServiceStateChanged(serviceState); } } 

    В идеале вы получите событие изменения состояния SIM-карты для обеих SIM-карт, а затем вы можете проверить имя оператора сети или что-то подобное, чтобы проверить наличие двух SIM-карт. Но вам нужно иметь две SIM-карты, работающие в двух разных сетях.

     final SubscriptionManager subscriptionManager = SubscriptionManager.from(getApplicationContext()); final List activeSubscriptionInfoList = subscriptionManager.getActiveSubscriptionInfoList(); int simCount = activeSubscriptionInfoList.size(); btnBack.setText(simCount+" Sim available"); Log.d("MainActivity: ","simCount:" +simCount); for (SubscriptionInfo subscriptionInfo : activeSubscriptionInfoList) { Log.d("MainActivity: ","iccId :"+ subscriptionInfo.getIccId()+" , name : "+ subscriptionInfo.getDisplayName()); } 
    Давайте будем гением компьютера.