我可以成功加载CallManager及其方法.但是,当我调用getState(),getActiveFgCallState()时,即使应用程序从TelephonyManager接收到不同的调用状态,它也始终返回IDLE,即TelephonyManager.CALL_STATE_IDLE,TelephonyManager.CALL_STATE_OFFHOOK,TelephonyManager.CALL_STATE_RINGING.
我使用以下代码加载类及其方法:
final Class> classCallManager = classLoader.loadClass("com.android.internal.telephony.CallManager");
Log.i(TAG, "Class loaded " + classCallManager.toString());
Method methodGetInstance = classCallManager.getDeclaredMethod("getInstance");
Log.i(TAG, "Method loaded " + methodGetInstance.getName());
Object objectCallManager = methodGetInstance.invoke(null);
Log.i(TAG, "Object loaded " + objectCallManager.getClass().getName());
Method methodGetState = classCallManager.getDeclaredMethod("getState");
Log.i(TAG, "Method loaded " + methodGetState.getName());
Log.i(TAG, "Phone state = " + methodGetState.invoke(objectCallManager));
顺便说一句,我想要做的就是检测电话何时响铃.我在源代码中看到ALERTING是我应该听的内部事件.因此,我尝试使用CallManager来获取Call.State,而不是Phone.State.我也尝试使用CallManager类的registerForPreciseCallStateChanges(),但到目前为止还没有接近过.