2014-01-05 4 views
1

У меня есть мобильный телефон с двумя SIM-картами, на котором мое приложение отображает детали SIM-карты и оператора. Но (очевидно) он обнаруживает и показывает детали только SIM1, а не SIM2. Есть ли способ доступа к данным SIM2?Обнаружение текущей/первичной SIM-карты на SIM-карте с двумя SIM-картами

Я знаю, что Android не поддерживает двойную SIM по умолчанию, и что мобильные ухищрения производителя это таким образом, что Android использует в выбранного SIM (SIM1 или SIM2, в зависимости от того выбирает пользователь) в качестве первичного (для посылки вызова), а другая SIM - в режиме ожидания (срабатывает при получении вызова). Должен быть способ обнаружить основной SIM-карты.

Меня не интересует выбор обеих SIM-карт одновременно. Требуется только информация о SIM-карте, которая была выбрана пользователем как первичная для совершения вызовов.

Любая ссылка/рабочий пример/предложения, любая помощь будет высоко оценена.

Благодаря

ответ

1

Шаг # 1: Составьте список всех производителей Android устройств, который имеет 1+ устройств Dual-SIM.

Шаг № 2: Свяжитесь с этими производителями и задайте свои вопросы.

Как Вы писали:

Я знаю, что Android не поддерживает двойной SIM по умолчанию и что ухищрений производитель мобильных она

Там нет требования, что любой производитель устройства должен настроить его так же, как и любой другой производитель, и нет требования, чтобы какой-либо производитель данного устройства настраивал его так, как это видно разработчику приложения. Следовательно, единственный способ получить необходимую информацию, если приложение действительно доступно, - связаться с производителем.

2

Чтобы увидеть состояние типа SIM1 в консоли: ADB dumpsys оболочки telephony.registry

Чтобы увидеть состояние типа SIM2 в консоли: ADB dumpsys оболочки telephony.registry2

mCallState изменены на входящих/исходящих вызов. Это позволит вам знать который SIM карта, используемая для вызова

Чтобы увидеть дополнительную информацию: ADB оболочки getprop | Grep GSM

При вызове dumpsys из Java-приложения, вам нужно android.permission.DUMP в манифест. Но это не работает на некоторых новых устройствах.

На некоторых телефонах может работать этот код, чтобы знать default sim card:

Object tm = getSystemService(Context.TELEPHONY_SERVICE); 
Method method_getDefaultSim;  
int defaultSim = -1; 
try { 
    method_getDefaultSim = tm.getClass().getDeclaredMethod("getDefaultSim"); 
    method_getDefaultSim.setAccessible(true); 
    defaultSim = (Integer) method_getDefaultSim.invoke(tm); 
} catch (Exception e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

Method method_getSmsDefaultSim; 
int smsDefaultSim = -1; 
try { 
    method_getSmsDefaultSim = tm.getClass().getDeclaredMethod("getSmsDefaultSim"); 
    smsDefaultSim = (Integer) method_getSmsDefaultSim.invoke(tm); 
} catch (Exception e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
+0

При использовании этой калибровки SIM всегда получает «0» и SMS «1». Даже выбранный сим или «Спросить первым» –

 Смежные вопросы

  • Нет связанных вопросов^_^