2016-12-05 5 views
0

Я создаю приложение для Android, где мне нужно значение «getSimOperator».Как получитьSimOperator в Android-телефоне с двумя SIM-картами?

Я могу получить это значение> 21 версия API, но для более низкой версии в двойной SIM-карте. Я получаю значение SIM1, но не могу получить значение SIM2.

Как я могу получить значение «getSimOperator» для SIM2 < 21 версия API.

Ранее я поставил вопрос ниже, это ссылка How to get Mcc and Mnc below LOLLIPOP_MR1.

Кто-то передал мне ссылку dual sim android phone which sim receive a call.

Но я получаю сообщение об ошибке при реализации кода вышеуказанной ссылки. Я указал на ошибку «java.lang.NoSuchMethodException: getDefault [int]»

Облако, которое объясняет мне, почему эта ошибка наступает.

+0

, что означает, что метод недоступен в ваш телефон – eriuzo

+0

@eriuzo Я также использую это и стараюсь на многих устройствах, но не работает для меня. такая же ошибка в каждом телефоне. –

ответ

0

здесь эта ссылка может помочь вам и обратиться к примеру №. 24 в этом примере http://www.programcreek.com/java-api-examples/android.telephony.TelephonyManager

Попробуйте эту ссылку Github. https://github.com/illarionov/MozStumbler/blob/develop/src/org/mozilla/mozstumbler/cellscanner/GeminiCellScanner.java

В этом следующем методе возвращают всю информацию о доступных сим-картах.

private List<CellInfo> getCellInfo(int presentSimNumsIndex){} 

Другой метод также представлен ниже. Для API> = 17:

TelephonyManager manager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); 

// Get information about all radio modules on device board 
// and check what you need by calling #getCellIdentity. 

final List<CellInfo> allCellInfo = manager.getAllCellInfo(); 
for (CellInfo cellInfo : allCellInfo) { 
    if (cellInfo instanceof CellInfoGsm) { 
     CellIdentityGsm cellIdentity = ((CellInfoGsm) cellInfo).getCellIdentity(); 
     //TODO Use cellIdentity to check MCC/MNC code, for instance. 
    } else if (cellInfo instanceof CellInfoWcdma) { 
     CellIdentityWcdma cellIdentity = ((CellInfoWcdma) cellInfo).getCellIdentity(); 
    } else if (cellInfo instanceof CellInfoLte) { 
     CellIdentityLte cellIdentity = ((CellInfoLte) cellInfo).getCellIdentity(); 
    } else if (cellInfo instanceof CellInfoCdma) { 
     CellIdentityCdma cellIdentity = ((CellInfoCdma) cellInfo).getCellIdentity(); 
    } 
} 

В AndroidManifest добавить разрешение:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
</manifest> 

Чтобы получить оператора сети вы можете проверить МСС и MNC коды:

https://en.wikipedia.org/wiki/Mobile_country_code

https://clients.txtnation.com/hc/en-us/articles/218719768-MCCMNC-mobile-country-code-and-mobile-network-code-list-

+0

Я думаю, что это было для SIM1 только для SIM2 –

+0

Спасибо, я скоро проверю и обновит @Dharmishttha –

+0

Я использую ваш код, но все еще получаю MCC и значение MNC для SIM1, а не SIM2. Как получить MCC и MNC для SIM2 –