- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我希望能够在我的 Android 手机连接到我的计算机时使用以下 ADB 命令发送短信
adb shell am start -a android.intent.action.SENDTO -d sms:CCXXXXXXXXXX --es sms_body "SMS BODY GOES HERE" --ez exit_on_sent true
adb shell input keyevent 22
adb shell input keyevent 66
我已经开始工作了,但是在电话上,这会向收件人弹出一条文本消息,其中填写了正文,然后单击发送按钮并返回到您所在的位置。有什么办法可以完全在后台执行此操作,这样它就不会干扰手机上发生的任何事情吗?
最佳答案
简短版:
Android 5 及更早版本(此处为 android 4):
adb shell service call isms 5 s16 "com.android.mms" s16 "+01234567890" s16 "+01SMSCNUMBER" s16 "Hello world !" i32 0 i32 0
Android 5 及更高版本(此处为 android 9):
adb shell service call isms 7 i32 0 s16 "com.android.mms.service" s16 "+1234567890" s16 "null" s16 "Hey\ you\ !" s16 "null" s16 "null"
Isms 方法编号(上面的 5 和 7)可能会随着 android 版本的不同而改变。阅读完整的解释以理解它。
所有安卓版本的完整解释:
是的,它存在!但不能使用此命令,因为这些输入事件在 sleep 模式下被阻止。此解决方案取决于您的 android 版本,因此我将为您解释几乎所有版本 ...
首先,通过运行检查您是否有服务 isms:
adb shell service check isms
Service isms: found
答案找到了,不错,继续前进。服务主义有各种“选项”,语法是:
service call name_service option args
可以通过键入找到服务名称:
adb shell service list
它将显示很多可用的服务,但有趣的是:
5 isms: [com.android.internal.telephony.ISms]
你可以看到 com.android.internal.telephony.Isms,所以在这个 link 上选择你的 android 版本(通过更改分支),然后导航到:telephony/java/com/android/internal/telephony
并打开 Isms.aidl
剩下的我将使用 android Pie (android 9) 文件 ( link )。
在 185 线上我们有:
void sendTextForSubscriberWithSelfPermissions(...)
注意:在 android 5 之前,该方法被命名为 sendText(...)
。
这是接口(interface) ISMS 中的第 7 个声明。所以我们发送短信的选项是数字 7。在声明的顶部有参数的解释。这是一个简短的版本:
-> 找到你的包名:浏览您的应用文件或在 google play 下载 Package Name Viewer,找到您的消息应用程序并复制名称 (com.android...)
-> 找到你的 smsc :在您的应用程序 -> 设置 -> SMSC 或服务中心或消息中心等中,复制号码显示(不要更改)
就在完成之前,在服务中,字符串由 s16 声明,整数和 PendingIntent 由 i32 声明。
所以对于我的例子,我们有:
最后:
Android 5 及更早版本(此处为 android 4):
adb shell service call isms 5 s16 "com.android.mms" s16 "+01234567890" s16 "+01000000000" s16 "Hello world !" i32 0 i32 0
Android 5 及更高版本(此处为 android 9):
adb shell service call isms 7 i32 0 s16 "com.android.mms.service" s16 "+1234567890" s16 "null" s16 "'Hey you !'" s16 "null" s16 "null"
->批处理文件中的示例:
android 4 的 send.bat:
echo off
set num=%1
shift
for /f "tokens=1,* delims= " %%a in ("%*") do set ALL_BUT_FIRST=%%b
echo %ALL_BUT_FIRST%
adb shell service call isms 5 s16 "com.android.mms" s16 "%num%" s16 "+01000000000" s16 "%ALL_BUT_FIRST%" i32 0 i32 0
运行:
send.bat +01234567890 Hey you !
现在告诉我它是否适用于你的 android 版本:)
关于android - 通过 ADB 在 Android 上发送短信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17580199/
使用 http://developer.android.com/training/basics/firstapp/running-app.html 上的指南,我使用 adb 将示例 Hello, Wo
如何修复 - 无法创建调试桥:无法启动 adb 服务器:无法检测 adb 版本,adb 输出:/home/dilip/Downloads/sdk/platform-tools/adb: 1:/home
我在 UBUNTU 18.x 操作系统上练习 REACT NATIVE,一切运行顺利,昨天我更新了我的 React native、react 和 android gradle 版本然后我收到一些错误,
这个问题在这里已经有了答案: android studio adb Syntax error: ")" unexpected (4 个答案) 关闭 5 年前。 我确实将我的工作室更新到 Linux
这是我的步骤: adb connect 'my android IP address' connected adb reboot //in this step my phone is rebootin
我有一个应用程序可以监听接收通知。安装后,我应该从设置 -> 安全 -> 通知访问启用通知访问 我在模拟器上安装这个应用程序并使用 ADB 运行它。但我不知道如何使用 ADB 中的命令行为其启用通知访
ADB全称Android Debug Bridge, 是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod设备(如G1手机). 它的主要功能
我知道这个问题被问了多次,也有一些替代答案。所以请不要关闭其他链接,因为我在下面添加了该链接。 [2014-01-23 16:19:44 - adb] ADB server didn't ACK [2
我在 adb 中观察到了这种新行为v1.0.39。命令: adb shell getevent -l 给出以下输出: 观察到最后一行是不完整的。这发生在许多不同的设备上。相同的命令在 adb 中无需缓
我正在尝试通过 adb shell am 和 adb shell service call 发送短信。我都收到错误消息。 a) 我正在尝试按照 adb shell am 命令发送短信 adb shel
由于某些原因,我的手机无法使用电缆。 我在 Internet 上看到可以通过 Wifi 将 adb 连接到 Wifi,但是我试了一下,结果是这样的: adb devices List of devic
尝试通过 expo 在模拟器上运行 react-native 应用程序时出现此错误。 Couldn't start project on Android: Error running adb: adb
这个问题在这里已经有了答案: adb server version doesn't match this client (41 个回答) 关闭4年前。 在启动 genymotion 模拟器后尝试从终
adb server version (39) doesn't match this client (40); killing... could not read ok from ADB Server
我已经创建了一个虚拟 Android 模拟器 (Nexus_5X_API25),我需要获得根访问权限。但是当我输入 adb remount 命令时,它总是告诉我 adb 没有以 root 身份运行。我
这个问题在这里已经有了答案: ADB - Android - Getting the name of the current activity (13 个答案) 关闭 4 年前。 我正在使用 adb
我只是想运行 adb shell,这样我就可以终止进程以进行测试。我在目录 platform-tools 中,adb 可执行文件就在那里。当我尝试运行 shell 时,它说找不到 adb 命令。我正在
我刚刚安装了 android studio 和平台工具,但我无法调用 adb,即使它们显然位于同一目录中。我收到此错误: zsh: command not found: adb 我是 android
以下命令用于使用 Android SDK 工具版本 24.4.1 退出模拟器。将工具版本更新到 25.1.6 后,它在 Mac 上停止工作。 adb -s emulator-5554 emu kill
我正在尝试 root 第 8 代 Kindle HD Fire (Fire OS 6.3.0.1)我已经打开了 Developer options,但是 Enable ADB 没有列在它下面。还有其他
我是一名优秀的程序员,十分优秀!