假来电 Android

62

如何在Android模拟器中伪造来电?

下面的代码可以让我打电话,但我想强制模拟器接收来电,最好是从我选择的号码呼入。

adb shell am start -a android.intent.action.CALL tel:1112223333

因此,与上述命令直接相反。


5
我本想评论让OP接受一个答案,但我注意到他最后一次出现是在发布问题的时候,而不是一分钟之后。这意味着他甚至没有看到答案...真是个悲伤的故事。 - Tim
10个回答

61
您可以在 Eclipse 中使用 DDMS,在 Android Studio 中使用 Android 设备监视器,或在终端上运行命令行。 使用 DDMS:
  • 打开 DDMS/ADM
    • 在 Eclipse 中:窗口 > 打开透视图 > DDMS
    • 在 Android Studio 中:工具 > Android > Android 设备监视器
  • 输入虚拟的来电号码
  • 选择 "语音"
  • 按下呼叫按钮
输入虚拟的来电号码 此后,您将看到模拟器接收到来电如下所示: 接收到的来电 使用命令行:

$ telnet localhost 5554
$ gsm call 123456789

注:5554:模拟器实例的控制台端口号
       12345678:来电号码。

我的“模拟器控制”被禁用了!我无法修改任何复选框或输入字段。为什么? - nick
1
设备监视器在Android Studio 3.2之后已被弃用并移除。请参考https://developer.android.com/studio/profile/monitor。 - mili
2
使用最新版本的Android Studio,我没有选项:工具> Android> Android设备监视器 在最新版本中是否有任何新方法? - Eran Friedland

28

在Android Studio 2.1中,这是很容易的!

输入图像描述

输入图像描述


11
那么对于通过USB ADB连接的实际设备呢? - Sumit

16
你可以使用Putty来完成此操作。下载并安装Putty:http://www.chiark.greenend.org.uk/~sgtatham/putty/ 步骤1: 运行Putty 步骤2: 在地址框中输入127.0.0.1,在端口框中输入模拟器运行的端口号。端口号通常在模拟器窗口的左上角(一般为5554)。确保类型设置为“telnet”。点击“打开” 步骤3: 会打开一个终端。输入:
gsm call <the number you want the phone to see>

按下回车键就完成了。

编辑: 你也可以发送伪造的短信:

sms send <the number you want the phone to see> <the message>

由于某种原因,在我的电脑上,第一次输入gsm命令时无法识别。第二次输入时,它可以正常工作。不确定原因。只是想让你们知道。 - Pop-A-Stash

6
如果您正在使用Eclipse,则可以使用模拟器控制来完成此操作。为此,请单击Eclipse菜单中的“窗口”,然后选择“显示视图”,现在单击“其他”。一个小窗口将打开,选择Android,然后选择模拟器控制。
在模拟器中使用它进行呼叫。

如果视图灰显,则确保您还打开了设备视图并单击您的模拟器。 - HGPB

4

测试相同行为的另一种选择是使用真实手机和Google的两步验证设置来生成电话(见图像)。

voice call


附加的图片无法显示。 - donmezburak
这种方法似乎不是正确的做法。 - Jude Osbert K

2
有三个选项是我最近检查了一下,用于在 Android 模拟设备(AVD)上获得模拟呼叫。
选项1:
前往模拟设备的“更多”选项,如下图所示,然后点击“呼叫设备”按钮,即可接到来自指定号码的模拟电话。

enter image description here

选项2:
通过模拟设备 UI 检查电话号码,方法是进入“设置”--> “系统” --> “关于模拟设备”,如下所示。从其他设备拨打此号码。

enter image description here

选项3:
打开Android设备监视器(例如在Windows上,“C:\ Users \ xyz \ AppData \ Local \ Android \ Sdk \ tools”中启动监视器),按照下面所示设置您自己的呼入号码并拨打电话。

enter image description here


1
在类Unix系统上,使用telnet和netcat的便捷一行命令:
 $ echo "gsm call 123456789" | nc -v  localhost 5554

@DovidBender 我正在使用Android Studio模拟器。它默认使用5554端口 - Matouš Borák

1

Shell脚本incoming_call.sh:

#!/bin/sh
expect << EOF
spawn telnet localhost 5554
expect -re ".*>"
send "gsm call $1\r"
expect -re ".*>"
send "exit\r"
EOF

使用方法:

incoming_call.sh +55555555555

系统/bin/sh期望未找到。 - Sumit
也许你是Windows用户。 - falko

1
在真实设备上
adb shell am start -a android.intent.action.CALL -d tel:+CCXXXXXXXXXX

CC代表国家代码,XX代表电话号码。


0

您可以通过telnet连接到模拟器来完成此操作。
打开命令提示符并输入

telnet localhost <console-port>

您可以在模拟器的标题栏上找到<console-port>
enter image description here

根据上面的示例,我的<console-port>是5554。

连接到模拟器后,通过telnet输入

gsm call <telephone-number>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接