我如何从一个shell发送短信?

我希望能够使用命令行从一个shell发送实际的SMS消息,而不是依靠任何apk来这样做。 我有兴趣在手机之间发送此消息,而不是从模拟器发送到手机。 例如,通过运行命令:

service call phone 2 s16 "1234567890" 

我可以使用命令行从电话拨打电话。 “服务列表”命令显示了一个isms服务,我似乎无法提供正确的参数。 我会假设其中一个参数应该是一个PDUstring,但到目前为止还没有任何运气。

事实上,这可以做到,但需要安装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 

其中CCXXXXXXXXXX是国家代码,然后是电话号码。 这可能无法在非标准的android安装正常工作,您将需要find正确的keyevent值传递。

你可以telnet到模拟器做一些类似于“telnet localhost 5554”,其中5554是模拟器正在监听的端口。 之后,您可以通过执行以下操作发送短信:

 sms send 1234 "Hello" 

1234可以是任何数字的string。 如果包含空格,请将消息用引号括起来。

编辑:在真实设备上的Android中不存在短信命令,这是一个仿真器的function,假冒短信接收不发送。 这只是一个方便的仿真设备,不能访问任何实际的蜂窝networking。

比照 http://developer.android.com/guide/developing/devices/emulator.html#sms

这个怎么样?

 service call isms 5 s16 "+??????????" i32 0 i32 0 s16 "SMS TEXT HERE" 

我没有足够的信誉积分来回答德米特里给出的答案,但这是一个小修改的答案:至less对于美国的数字,而不是把一个加号(+)它为我工作一个“1”,例如17079876543 …

service call isms 5 s16 "17079876543" i32 0 i32 0 s16 "SMS TEXT HERE"

哦,男孩,哦,男孩,哦,男孩…现在,如果我能弄清楚如何通过命令行接收短信,并与emacs结合(在Emacs的壳说 – 他开始把他的手擦在一起,破解一个倾斜的笑容…并考虑我们可以拉的所有其他命令行杠杆!)

你可以从命令行发送你想要的任何意图,所以这只是一个问题,想知道什么意图可以用来发送一个短信,或者如果一个不存在,然后写一个apk提供这种意图的短信能力并发送意图从命令行触发。

如果你最终编写了一个apk来做这件事,请考虑一下权限。 哪个用户将作为命令行运行 – adb shell用户? 任何旧的普通应用程序用户 你的apk可能会有短信权限,但是你想要扩展到手机上的所有内容,或者在你的意图中实现一些安全机制?