Как получить SimOperator в телефоне с двумя SIM-картами Android?

Я создаю приложение для Android, где мне нужно значение «getSimOperator».

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

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

Ранее я задавал вопрос ниже по ссылке Как получить Mcc и Mnc ниже LOLLIPOP_MR1.

Кто-то дал мне ссылку телефон Android с двумя SIM-картами какой сим принимает вызов.

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

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


person Hitesh Matnani    schedule 05.12.2016    source источник
comment
это означает, что метод недоступен на вашем телефоне   -  person eriuzo    schedule 05.12.2016
comment
@eruzo Я также использую это и пробую на многих устройствах, но у меня не работает. одна и та же ошибка на каждом телефоне.   -  person Hitesh Matnani    schedule 05.12.2016


Ответы (1)


здесь эта ссылка может помочь вам и сослаться на пример №. 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>

Чтобы получить оператора сети, вы можете проверить коды mcc и 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-

person Dharmishtha    schedule 05.12.2016
comment
Я думаю, что это было для SIM1 только не для SIM2 - person Hitesh Matnani; 05.12.2016
comment
Спасибо, я скоро проверю и сообщу вам @Dharmishttha - person Hitesh Matnani; 06.12.2016
comment
Я использую ваш код, но все еще получаю значения MCC и MNC для SIM1, а не для SIM2. Как получить MCC и MNC для SIM2 - person Hitesh Matnani; 06.12.2016
comment
До API 22 будет сложно добиться того, чего вы хотите. Я считаю, что до API 22 двойная SIM-карта изначально не поддерживалась Android. Таким образом, у каждого мобильного поставщика должна быть своя реализация. Возможно, вам следует получить их API/SDK и включить их в свой проект. Только так у вас будет доступ к их API. - person Dharmishtha; 06.12.2016
comment
Как я могу узнать, какой API/SDK и как добавить в свой проект - person Hitesh Matnani; 06.12.2016
comment
Я импортирую проект GitHub, но при сборке появляется много ошибок. - person Hitesh Matnani; 06.12.2016