Android (Lollipop) не может обнаружить текущий телефонный звонок со второй SIM-карты

У меня есть код, который делает телефонные звонки и вешает трубку через определенное время. Мне удалось совершать звонки с обеих SIM-карт (используя разные приемы для 2-й SIM-карты), однако Android, похоже, не может определить, снята ли вторая SIM-карта;

Взгляните на этот фрагмент кода:

Class<?> c = Class.forName(telMgr.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
ITelephony telephonyService = (ITelephony)m.invoke(telMgr);
if (telephonyService.isOffhook()) { // DO SOMETHING }

Если звонит первая SIM-карта, я получаю isOffHook() вместо true, а со второй SIM-карты телефон находится в процессе, но я получаю false.

Есть ли способ определить, снята ли трубка на обеих SIM-картах? Спасибо


person Hummus    schedule 23.06.2015    source источник


Ответы (1)


Спасибо за комментарии, но я нашел решение. Вместо того, чтобы использовать старую методологию получения «экземпляра» ITelephony из TelephonyManager (я использовал этот трюк в более старых версиях, потому что другие способы создавали мне проблемы), я использую TelephonyManager напрямую, вызывая getCallState(), и это кажется информативным и точным для обе SIM-карты. Пример кода:

TelephonyManager telMgr = (TelephonyManager)(this.getMainContext()
                        .getSystemService(Context.TELEPHONY_SERVICE));
/* Making a call... */
if (telMgr.getCallState() != TelephonyManager.CALL_STATE_OFFHOOK) { /* Do your stuff */ }

Просто и прямолинейно. Работаю с моей текущей версией 5.1 Lollipop.

person Hummus    schedule 24.06.2015