2

我正在开发一个接听电话的应用程序,并且在通话期间在拨号盘中,它会输入以前保存或复制的号码。首先,我想知道这是否可能。其次,我一直在思考一些想法,但我不知道它们可能有多疯狂,因为我对 Android 还比较陌生,对它的局限性知之甚少:

  1. 在剪贴板中存储一个号码,并通过某种方式在通话屏幕中单击粘贴,这会将号码简单地粘贴到拨号器中
  2. 获取存储在剪贴板中的数字中的每个数字,并以编程方式按下用户会触摸的电话键盘上的按键
  3. 在我自己的应用程序中打开来电,该应用程序可以接听电话并能够在拨号器中粘贴/添加号码
  4. 覆盖在呼叫中弹出的小键盘上的一个键(比如退格键),并重新编程以执行我想要的功能(因此,它会输入保存的数字而不是退格)

这些都可能吗(为什么或为什么不)?或者你能建议任何其他方式来完成我想要的吗?谢谢,非常感谢。

编辑:让我更具体一点。这是我的目标屏幕:

在此处输入图像描述 - 我需要一些方法来在这个字段中输入一个自定义数字。无论如何,我只需要一个线索或提示让我走上正轨。我见过人们制作自定义拨号器的应用程序,但他们所做的只是输入输入的号码并拨打电话。如果我必须制作自己的应用程序,它必须能够接听电话或访问接听电话,并填充上述字段,或者它自己的字段,以提供相同的功能。

4

3 回答 3

3

我不认为有一个API

我现在想的最好方法是在通话期间(可能通过 Receiver)打开一个应用程序,其中包含一个 TextView,您可以在其中输入您的文本

然后在这里您可以拨打电话:

Intent intentCall = new Intent(Intent.ACTION_CALL, Uri.fromParts("tel", phoneNumber, null));
startActivity(intentCall);

但我不知道手机应用程序会如何反应

于 2012-08-24T14:44:25.910 回答
2

如果我理解正确,您希望应用程序在接到电话后在拨号盘中输入几个数字。

以下可能是值得尝试的选项。

使用获取内部com.android.internal.telephony.ITelephony对象Java reflection详情在这里。然后调用dial()方法。此方法只是将数字添加到拨号盘,但实际上并不发起电话呼叫。这可能对你有用。

于 2012-08-29T14:46:37.213 回答
2

从您给出的描述来看,您似乎需要使用电话管理器界面。你可能会面临这个想法的问题是你会试图以编程方式接听电话并有效地改变电话状态。换句话说,您需要 MODIFY_PHONE_STATE 权限。此权限现在仅限于系统应用程序,从 Gingerbread 开始。如果没有这个基本的许可,我认为你的应用想法不会很可行。此外,由于您将尝试以编程方式输入数字,我假设这是为了发送 DTMF 音调,因此您会遇到应用程序无法访问 Android In Call Data 的问题。截至目前,缺少对 Android 中正确电话包的支持。

于 2012-08-29T08:38:55.030 回答