在Android中获取不同的通话状态

时间:2011-07-28 06:19:48

标签: android telephony

我正在尝试使用Java反射来访问CallManager并检测我总是让呼叫空闲的呼叫状态。请帮帮我。 顺便说一下,我使用以下代码访问CallManager:

try{ 
    class classCallManager = class.forname("com.android.internal.telephony.CallManager");
    Method methodGetInstance = classCallManager .getDeclaredMethod("getInstance");
    methodGetInstance.setAccessible(true);
    Object objectCallManager = methodGetInstance.invoke(null);
    Method methodGetActiveFgCallState = classCallManager.getDeclaredMethod("getActiveFgCallState");
}catch (Exception e) {}

1 个答案:

答案 0 :(得分:1)

我可以确认,不幸的是,即使尝试激活fg调用失败:返回值始终为false

    val classCallManagerName = "com.android.internal.telephony.CallManager"

    log log "get class name manager"

    val classCallManager = Class.forName(classCallManagerName)

    future {
      var msec = 15000

      val sleeptime = 500

      while (
        msec > 0
      ) {
        log log "get method instance"

        //getDeclaredMethod
        val methodGetInstance = classCallManager.getMethod("getInstance")

        log log "set method get instance accessible"

        methodGetInstance.setAccessible(true)

        log log "invoke get instance"

        val objectCallManager = methodGetInstance.invoke(null) //null for static methods

        log log "getMethod hasActiveFgCall"

        //getActiveFgCallState
        val hasActiveFgCall = classCallManager.getMethod("hasActiveFgCall")

        log log "hasActiveFgCall setAccessible(true)"

        hasActiveFgCall.setAccessible(true)

        log log "has active fg call: " + hasActiveFgCall.invoke(objectCallManager)

        Thread.sleep(sleeptime)

        msec -= sleeptime
      }
    }

请注意代码在Scala中