3

我有一段代码可以拨打电话并在一定时间后挂断。我已经设法从两个 SIM 卡上拨打电话(对第二张 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 卡上都摘机?谢谢

4

1 回答 1

1

感谢您的评论,但我已经找到了解决方案。我没有使用从 中检索ITelephony“实例”的旧方法TelephonyManager(我在旧版本中使用了这个技巧,因为其他方式给我带来了麻烦),我TelephonyManager直接通过调用来使用 ,这对于两个 SIMgetCallState()来说似乎信息丰富且准确。代码示例:

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 版本。

于 2015-06-24T14:11:24.867 回答