如何通过android上的ADB命令通过pc拨打电话?

Posted

技术标签:

【中文标题】如何通过android上的ADB命令通过pc拨打电话?【英文标题】:How to make a call via pc by ADB command on android? 【发布时间】:2011-06-22 20:28:33 【问题描述】:

我想通过 android 命令行上的 ADB 命令拨打电话。

我应该如何使用ADB命令通过PC拨打电话?

请提供源代码。

【问题讨论】:

是什么让您认为这是可能的? ddms 通过本机代码执行此操作我不太确定这是他在 shell 上发出的 android 命令... ddms 唯一的神奇之处在于它知道如何做很多事情,在这种情况下,这并不是什么大秘密。然而,ADB 守护程序有一些魔力,其形式是对在(安全)设备上运行的其他代码不可用的权限。但这适用于您 PC 上的代码,而不仅仅是 Google 的代码。 相关:How to pick up a call by adb 【参考方案1】:

您应该这样做(将 替换为您的设备或模拟器的序列号,例如 emulator-5554):

$ adb -s <serialno> shell am start -a android.intent.action.CALL -d tel:555-5555

并在 logcat 中查看:

Starting: Intent  act=android.intent.action.CALL dat=tel:xxx-xxx-xxxx 

【讨论】:

是的,也可以确认... 如何进行视频通话? 太棒了!现在我不需要去我的车就可以解锁我的手机屏幕坏了 是否可以拨入电话?意思是好像有人打电话给设备,而不是相反? 如何执行USSD?我试过这个命令,我的手机试图打电话给 USSD :(【参考方案2】:

你可以这样做:

    在 cmd 中进入你的 adb 输入 adb 设备。您将获得的任何 ID 都将是您的设备编号 输入(不带引号):

adb -s "Your devices number" shell am start -a android.intent.action.CALL -d tel:"phone no. to call"

就是这样,你会得到如下响应:

Starting: Intent  act=android.intent.action.CALL dat=tel:xxxxxxxxxx 

【讨论】:

【参考方案3】:

可以使用该命令通过PC触发Android呼叫号码。

adb shell am start -a android.intent.action.CALL -d tel:+CCXXXXXXXXXX
    cc=国家代码 XXXXXXXXXX=电话号码

【讨论】:

【参考方案4】:

在某些 Android 设备上,存在可执行文件

/system/bin/radiooptions

如果你运行它,会显示帮助

Usage: radiooptions [option] [extra_socket_args]
           0 - RADIO_RESET, 
           1 - RADIO_OFF, 
           2 - UNSOL_NETWORK_STATE_CHANGE, 
           3 - QXDM_ENABLE, 
           4 - QXDM_DISABLE, 
           5 - RADIO_ON, 
           6 apn- SETUP_PDP apn, 
           7 - DEACTIVE_PDP, 
           8 number - DIAL_CALL number, 
           9 - ANSWER_CALL, 
           10 - END_CALL 

拨打一个号码,你可以简单地运行

adb shell su -c "radiooptions 8 XXXXXXX"

XXXXXXX 将替换为电话号码。

我在很多 HTC 设备上都看到了这个命令。我目前在 HTC One 上运行 Cyanogenmod 10.2,它也在那里。也有可能,它只在配备高通无线电芯片的设备上可用。

【讨论】:

我的 Lollipop One+ One 的 /system/bin 中不存在无线电选项 这几乎只适用于 HTC,似乎已从其中一些中删除。如果您尝试其他方法,它可能会抱怨具有 PIE 能力。如果你用 -fPIE 选项编译它,你也许可以使用它。【参考方案5】:

您可以启动拨号程序,首先使用查找包

adb shell dumpsys window windows | grep -E 'mCurrentFocus'

然后使用

启动它
adb shell monkey -p <package> 1 (probably com.android.contacts)

通过单击拨号器的坐标,确保您在拨号器而不是联系人页面上

adb shell input tap <x> <y> (in my case 65, 80)

输入数字

adb shell input text <number>

然后打转盘坐标

adb shell input tap <x> <y> (in my case 220, 750)

肯定这个答案是多余的。但是,我之前遇到的所有答案都会启动一个对话框,询问您希望使用哪个应用程序来完成操作 - Skype、viber 等,这意味着如果您没有选择默认拨号器但有 ott 呼叫应用程序已安装,或者指定了替代的默认拨号程序,则不会通过 gsm 进行呼叫。此方法将确保使用 gsm。

【讨论】:

当您只需调用 android.intent.action.CALL 然后提供一个号码时,所有这些都完全不需要。记得使用 +COUNTRY_CODE 才能自动调用。如果您提供手机号码,它可以正常工作,否则您只会看到拨号器打开该号码而没有任何反应。在屏幕上点击不是防弹的,我什至看到它把我送到家而不是点击当前的意图。【参考方案6】:

adb shell input keyevent 5 && adb shell input text 1234567890&&adb shell input keyevent 5

这里 1234567890 是电话号码

【讨论】:

以上是关于如何通过android上的ADB命令通过pc拨打电话?的主要内容,如果未能解决你的问题,请参考以下文章

Android端adb使用相关总结(转载)

ADB常用命令

adb命令无法连接安卓设备

如何获得Android设备名称

Android: adb 命令查日志

adb 命令 pc端 "复制粘贴" 文本到android设备