![]() |
1
12
这是我的帖子 Calling Android services from ADB shell . 它包括一个小bash脚本,我使用它自动下载特定设备的正确版本的服务源代码,然后对其进行解析,找出所有方法的事务代码。 |
![]() |
2
8
简而言之
详细
这是你能得到的-
由于我对剪贴板服务感兴趣,下面是它的外观
从这里我们可以总结出服务名是剪贴板服务,包路径是android.content.IClipboard
然后你需要知道IClipboard.aidl所在的完整路径。
所以在+android-4.2.2之后r1就是你的路径所在=
由于这些服务调用代码依赖于android系统,因此需要知道android操作系统的名称-
在我看来是8.1.0
https://android.googlesource.com/platform/frameworks/base/ 在我的例子中是android-8.1.0_r50。这里r50并不重要。您可以选择任何修订。现在我将点击链接,然后在那之后我的url将如下所示
然后在添加path_of_clipboard.aidl之后,我的完整url将如下所示
在这里,接口中有很多方法
因此,第一个方法setPrimaryClip的代码在第一个位置出现时为1,最后一个方法hasClipboardText的代码在aidl文件的第七个位置出现时为7。其他方法也一样。
您可能已经看到,我没有把callingPackage名称放在这里,因为它不是必需的。
如果方法需要参数,则可以像本例中所示那样传递它。
所以我就这样称呼它
这里i32代表32位整数,s16代表字符串。我们甚至可以将布尔值作为整数传递,如示例所示。
小费 保持logcat打开(就像在android studio中一样),以检查在执行adb命令时发生的任何错误。 |
|
3
7
我在这里的第一个回答是希望对你有用。
为了解释这个小谜团,让我使用android 4.3.1。
This
在您的情况下,链接可能是必不可少的。向下滚动java代码至第669行。有一个与
在您的例子中,您正在调用TRANSACTION_sendText。说明在第673行
代码的最后一部分由数字“4”组成。每个交易号+1=正确的交易号。这就是为什么
同样的规则适用于所有服务。 我确信您现在知道了如何检查通知服务的事务。很有趣。 |
![]() |
Abhilash Das · 输入文本时,编辑文本与工具栏重叠 1 年前 |
![]() |
Community wiki · 局部变量可能尚未初始化 1 年前 |
![]() |
jvargas · 如何获取上个月的第一天和最后一天以及一年的第一天 2 年前 |