我正在开发一个项目,该项目要求我的应用程序能够在通话期间在语音的上行链路频率上发送 DTMF 音调。
我的两个条件是:
- 我们不使用定制的 Android 平台
- 我们不需要root手机
我花了几天时间做功课,并且知道当前的 SDK/标准 API 不支持通话中的 DTMF 发送。然而,通过使用相关的类,com.android.internal.telephony
我希望模仿原生电话应用程序是如何做到这一点的。我关注了这个网站,了解如何将内部 API 用于标准 3rd 方应用程序。
我还为自己设置了 Android OS 开发环境,并且能够在模拟器上以调试模式运行 Phone 应用程序以了解其内部工作原理。
我在股票标准模拟器上尝试了各种方法,但我得到的错误是:
在尝试使用 android.uid.phone 的 sharedUserId 安装基于 Phone.apk 源的重命名应用程序后,我得到:
安装错误:INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
毫无疑问,因为我没有系统证书来签署它。
在尝试基于来自Phone.apk 源的相关DTMF 音调发送代码编写自定义应用程序后,我在设置PhoneFactory 时收到以下错误;
java.lang.SecurityException: Permission Denial: 不允许发送广播 android.provider.Telephony.SPN_STRINGS_UPDATED。
毫无疑问,由于我的应用程序没有正确的权限,尽管 AndroidManifest.xml 设置为具有与 Phone.apk 相同的权限。
我不知道我还能尝试什么。有没有人有什么建议?
在此先感谢,西蒙。