如何使用反射

时间:2018-01-23 01:35:47

标签: android reflection call dtmf

我正在尝试在来电中发送DTMF音。为此, android.telecom.Call 中有一个方法 playDtmfTone 。由于它是最后一堂课,我无法直接创建它的对象。

这就是我使用反射来获取对象的原因。但它引发了一个例外。 这是我的代码:

try{
    Class<?> c = Class.forName("android.telecom.Call");
    Object instance = c.newInstance();
    Method m = c.getDeclaredMethod("playDtmfTone", char.class);
    m.setAccessible(true);
    m.invoke(instance, new Object[]{'1'});
}catch (Exception e){
    Log.d("Exception of Reflection", e.getLocalizedMessage());
}

我正在关注msg:

  

反射异常:java.lang.Class没有零参数构造函数

我从这个answer中使用了这个想法。

我不确定会出现什么问题。

1 个答案:

答案 0 :(得分:0)

根据android文档,您无法直接创建调用对象。检索调用对象的唯一方法是通过InCallService的回调方法onCallAdded(呼叫调用),通过调用对象,您可以调用playDtmfTone。