我试图使用亚行shell命令发送消息。我发送了Android 10,但没有在Android 11上发送,我尝试了一切,但都没有成功。我为Android11 这里找到了isms服务的源代码。我还有2部Android 11手机,当我测试它们时,结果是一样的。为了测试我的shell命令是否在设备上工作,我尝试了输入命令,它做到了。我读过这,但还是没有用。
我使用的命令:
adb shell service call isms 7 i32 0 s16 "com.android.mms.service" s16 "%number%" s16 "null" s16 "%message%" s16 "null" s16 "null"此命令的输出:
Result: Parcel(00000000 '....')有人能帮忙吗?我如何在Android 11上用亚行shell命令发送消息?
(我在Android 12上试过,结果是一样的)
发布于 2022-03-28 15:19:00
Android 10之后:
adb shell service call isms 5 i32 1 s16 "com.android.mms" s16 "null" s16 "number" s16 "null" s16 "message" s16 "null" s16 "null" i32 0 i64 0在Android 10之前:
adb shell service call isms 7 i32 1 s16 "com.android.mms" s16 "number" s16 "null" s16 "message" s16 "null" s16 "null"发布于 2022-03-31 01:08:42
为了将来的证明方法--因为数字(5,7)变化了,你最好直接使用isms。以isms为例,我们看到:
redfin:/ $ service list | grep isms
104 isms: [com.android.internal.telephony.ISms]所以,看看(frameworks/base/telephony/java/com/android/internal/telephony/ISms.aidl) isms.aidl,你会发现'5‘现在是
void sendTextForSubscriber(in int subId, String callingPkg, String callingAttributionTag,
in String destAddr, in String scAddr, in String text, in PendingIntent sentIntent,
in PendingIntent deliveryIntent, in boolean persistMessageForNonDefaultSmsApp,
in long messageId);因此,建议的答案是:
call isms 5 i32 1 s16 "com.android.mms" s16 "null" s16 "number" s16 "null" s16 "message" s16 "null" s16 "null" i32 0 i64 0基本上是伪造论点(但不完全正确):
in int subId = 1
String callingPkg = "com.android.mms"
String callingAttributionTag = "null"
in String destAddr = "number"
in String scAddr = "16"
in String text = "text"
in PendingIntent sentIntent ="null" (should be i32 0)
in PendingIntent deliveryIntent = "null" (should be i32 0 also)
in boolean persistMessageForNonDefaultSmsApp = 0 = false,
in long messageId = 0 (the i64) 如果可以,请参考AIDL。这样做更安全,而且还确保您序列化了正确的参数。不幸的是,这些变化经常发生在不同版本之间。
(资料来源:“安卓内部设备”,第二卷(http://NewAndroidBook.com))
发布于 2022-12-03 12:52:00
如果您只想向您的模拟器发送一些测试消息,并且不想处理亚行,您可以通过模拟器本身来实现这一点。

https://stackoverflow.com/questions/71417145
复制相似问题