使用ADB shell(Android SDK)进行服务调用?

时间:2013-07-18 09:42:59

标签: android shell sdk sms adb

你知道Android上的adb shell命令“service call isms”吗? 这是我使用的完整命令:service call isms 5 s16“PhoneNumber”i32 0 i32 0 s16“BodyText”。

有一些参数,但我不知道它是什么意思(5,s16,i32,0)。有手册吗? 对我来说最重要的是当短信没有成功发送时出错(大约10%的短信没有发送)=>这个问题已经问过,但没有答案(https://stackoverflow.com/questions/17395546/get-status-sms-from-isms-service-using-shell-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输入keyevent 22 adb shell输入keyevent 66) 因为它使用图形界面。

你可以帮帮我吗? (对不起,我不会说英语。所以,我希望你理解我的要求)

非常感谢

1 个答案:

答案 0 :(得分:6)

在每个“服务呼叫”命令中,您需要输入:

  • 您要拨打的服务,在这种情况下,它是“isms”;
  • 你要调用的“函数”,在这种情况下它是“5”(后面会详细介绍);
  • 功能参数。

有两种类型的可能参数:字符串整数。在输入Integer参数之前,您需要使用 i32 指定其类型。 对于String参数也是如此,但您需要编写 s16

大多数“服务电话”命令都没有文档,或者很少 对于ISms,您可以在这里查看:http://www.androidjavadoc.com/1.0_r1_src/constant-values.html 获取可能的功能及其编号代码列表。点击ctrl-f并输入ISms以便快速访问。

ISms服务的“5”功能是来自Android API的ISms接口的 sendMultipartText 功能。 Here is the doc about this function. And here is the implementation class from the API.

所以,service call isms 5 s16 "PhoneNumber" i32 0 i32 0 s16 "BodyText",等于:

  

使用。从ISms服务调用sendMultipartText函数   字符串参数“PhoneNumber”,Integer参数0,Integer   参数0和String参数“BodyText”。

要回答你的问题,我很确定无法知道短信是否正在从命令行发送......但也许你可能会比我更深入地挖掘在API中你会找到一种方法。