问题:我们有什么方法可以找到在D-Bus接口中公开的方法(及其签名)?
问题描述:在我的手机中,我使用D-Bus调用BlueZ方法进行适配器接口,当在电话2上检查时,这些方法无法使用。
意图是检查方法名称/签名是否在其他设备中被修改,我无法访问代码,因此希望在界面中找到方法
答案 0 :(得分:2)
您还可以查看D-Feet。
答案 1 :(得分:1)
通过额外的谷歌搜索和dbus理解,使用D-Bus Introspection有助于获得在该特定界面上公开的方法(带有签名)。有关更多信息,请访问link。
答案 2 :(得分:0)
使用dbus-send,您可以列出系统上的可用服务:
会话:
dbus-send --session \
--dest=org.freedesktop.DBus \
--type=method_call \
--print-reply \
/org/freedesktop/DBus \
org.freedesktop.DBus.ListNames
系统:
dbus-send --system \
--dest=org.freedesktop.DBus \
--type=method_call \
--print-reply \
/org/freedesktop/DBus \
org.freedesktop.DBus.ListNames
您将得到这样的答案:
array [
string "org.freedesktop.DBus"
string ":1.1"
string ":1.26"
string "org.asamk.Signal"
]
如果要列出dbus服务背后可用的所有方法,您仍然可以使用dbus-send来自省dbus服务。
例如使用org.asamk.Signal
:
dbus-send --system --type=method_call --print-reply \
--dest=org.asamk.Signal \
/org/asamk/Signal \
org.freedesktop.DBus.Introspectable.Introspect
您会得到这种结果(被截断)
<node name="/org/asamk/Signal">
<interface name="org.asamk.Signal">
<method name="sendMessage" >
...parameters
</method>
<method name="sendGroupMessage" >
...parameters
</method>
</interface>
</node>
这里有2种方法,sendMessage
和sendGroupMessage