如何查找D-Bus接口中公开的方法

时间:2013-11-13 14:00:09

标签: dbus bluez

问题:我们有什么方法可以找到在D-Bus接口中公开的方法(及其签名)?

问题描述:在我的手机中,我使用D-Bus调用BlueZ方法进行适配器接口,当在电话2上检查时,这些方法无法使用。

意图是检查方法名称/签名是否在其他设备中被修改,我无法访问代码,因此希望在界面中找到方法

3 个答案:

答案 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种方法,sendMessagesendGroupMessage