通过adb shell服务调用isms Android 4.1.2发送短信

时间:2014-12-11 19:23:16

标签: android shell service sms adb

目前我通过此命令发送短信:

  

adb shell service call isms 6 s16" phoneNumber" i32 0 i32 0 s16" smsText"

在Android 2.3.6中运行良好。

现在我想在Android 4.1.2中使用相同的命令,但是当我发送命令时,我在Logcat中收到了这个输出

> 12-11 14:17:37.97 1626-2182/? D/PhoneRestrictionPolicy﹕ SmsRestrictionPolicy.canOutgoingSms >>>>

任何人都可以帮我删除这个" SmsRestrictionPolicy"请?

谢谢

4 个答案:

答案 0 :(得分:2)

引用this post

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安装上正常工作,您需要找到要传递的正确keyevent值。


根据this post上的评论,似乎无法通过问题中提到的service call isms发送(尽管如果您的应用是,我敢打赌 可能设置为设备的默认SMS应用程序。)


在没有用户交互的情况下发送SMS的一种解决方法是将号码和消息发送到发送SMS消息的服务器。可能已经有了第三方工具。快速浏览一下,this可能会有用。

答案 1 :(得分:1)

我的环境:

  • Android 4.1.2
  • MIUI ROM

你可以试试这个。

service call isms ..命令之前切换到消息应用程序用户。

  

su u0_a34 \
  服务电话主义5 s16" 10086" i32 0 i32 0 s16" 11"

u0_a34是邮件应用程序的用户名。

答案 2 :(得分:0)

尝试使用telnetsms send命令。

了解更多here

答案 3 :(得分:0)

它没有用,因为在android 4.1.2中,isms数是5而不是6。 所以它是:

adb shell service call isms 5 s16 "com.android.mms" s16 "+01234567890" s16 "+01000000000" s16 "Hello world !" i32 0 i32 0

您可以在此处查看如何为任何Android版本执行此操作:link