我希望能够仅使用命令行从shell发送实际的SMS消息,而不依赖于任何apk来执行此操作.我有兴趣在手机之间发送此消息,而不是从模拟器发送到手机.例如,通过运行命令:
service call phone 2 s16 "1234567890"
Run Code Online (Sandbox Code Playgroud)
我可以使用命令行从电话拨打电话.'service list'命令显示了一个isms服务,我似乎无法提供正确的参数.我会假设其中一个args应该是一个PDU字符串,但到目前为止还没有任何运气.
小智 42
事实上,这可以完成,但需要安装adb(android SDK的一部分)
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
Run Code Online (Sandbox Code Playgroud)
其中CCXXXXXXXXXX是国家/地区代码,后跟电话号码.这可能无法在非标准Android安装上正常工作,您需要找到要传递的正确keyevent值.
小智 11
您可以telnet到模拟器执行类似于"telnet localhost 5554"的操作,其中5554是模拟器正在侦听的端口.之后,您可以通过执行以下操作发送短信:
sms send 1234 "Hello"
Run Code Online (Sandbox Code Playgroud)
1234可以是任何数字串.如果包含空格,请将消息括在引号中.
编辑:在真实设备上的Android中不存在sms命令,它是一种仅限模拟器的功能,用于伪造接收不发送的SMS .这对于无法访问任何实际蜂窝网络的仿真设备来说非常方便.
比照 http://developer.android.com/guide/developing/devices/emulator.html#sms
Dmi*_*try 10
这个怎么样?
service call isms 5 s16 "+??????????" i32 0 i32 0 s16 "SMS TEXT HERE"
Run Code Online (Sandbox Code Playgroud)
我没有足够的声誉给予好评由梅德给出的答案指向上方,但IS与一个小的修改工作答案:至少在美国的数量,而不是把一个加号(+),它为我工作用一个"1",例如17079876543 ......
service call isms 5 s16 "17079876543" i32 0 i32 0 s16 "SMS TEXT HERE"
哦,男孩,哦,男孩,哦,男孩......现在,如果我能弄明白如何通过命令行接收短信,并将其与emacs结合起来(在emacs shell中说 - 他开始搓手并打破一个倾斜的笑容......并考虑我们可以拉的所有其他命令行杠杆!)
您可以从命令行发送任何您想要的意图,因此只需弄清楚可以使用什么意图发送短信,或者如果不存在,则编写一个提供此类意图发送短信的 apk功能并发送意图以从命令行触发该功能。
如果您最终编写了一个 apk 来执行此操作,请考虑一下权限。命令行将以哪个用户身份运行 - adb shell 用户?有老的普通应用程序用户吗?您的 apk 可能具有短信权限,但您是否想将其扩展到手机上的所有内容,或者按照您的意图实现某些安全机制?
| 归档时间: |
|
| 查看次数: |
61774 次 |
| 最近记录: |