您知道 Android 上带有 adb shell 的命令“service call isms”吗?
这是我使用的完整命令:service callisms 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)
因为它使用图形界面。

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

非常感谢

最佳答案

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

  • 您要调用的服务,在本例中为“isms”;
  • 你想调用的“函数”,在本例中它是“5”(稍后会详细介绍);
  • 函数参数。

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

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

    ISms 服务的“5”函数是来自 Android API 的 ISms 接口(interface)的 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" ,等于:



    要回答你的问题 ,我很确定没有办法知道是否正在从命令行发送短信......但也许如果你比我在 API 中做的更深入一点,你会发现办法。

    关于android - 使用 ADB shell (Android SDK) 调用服务?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17719898/

    10-12 02:01