【问题标题】:how to intantiate Call instance using reflection如何使用反射实例化调用实例
【发布时间】:2018-01-23 01:35:47
【问题描述】:

我正在尝试在来电中发送 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());
}

我收到以下消息:

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

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

我不确定出了什么问题。

【问题讨论】:

    标签: android reflection call dtmf


    【解决方案1】:

    根据android文档,你不能直接创建一个Call Object。获取调用对象的唯一方法是通过 InCallService 的回调方法 onCallAdded(Call call) 并通过调用对象调用 playDtmfTone。

    【讨论】:

    • 虽然此链接可能有助于您回答问题,但您可以通过获取链接的重要部分并将其放入您的答案来改进此答案,这样可以确保您的答案仍然是一个答案,如果链接被更改或删除:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 2021-03-23
    相关资源
    最近更新 更多