我想用RegisterAgent
调用方法gdbus
,但找不到合适的语法。
用这个命令反思/org/bluez
。
$ gdbus introspect --system --dest org.bluez --object-path /org/bluez --recurse
显示接口上的方法具有以下签名:
RegisterAgent(in o agent,
in s capability);
但在gdbus reference documentation中,我找不到任何显示如何将对象传递给方法的示例,在Internet上找到的众多示例中也找不到。
因此,我不知道如何将代理作为第一个参数传递,例如,我想选择
RegisterAgent
作为代理,但如何才能做到这一点?对于
org.bluez.AgentManager1
,这将给出:dbus-send --print-reply --system --dest=org.bluez /org/bluez \
--type=method_call org.bluez.AgentManager1.RegisterAgent \
objpath:/org/bluez/agent1 string:KeyboardOnly
但是我找不到如何通过gdbus调用来实现这一点。知道吗?
最佳答案
我使用
dbus-monitor --system
经过反复试验,我终于找到了正确的语法。
我试图发出的gdbus命令的拼写如下:
gdbus call --system --dest org.bluez --method \
org.bluez.AgentManager1.RegisterAgent --object-path /org/bluez \
/org/bluez/agent KeyboardOnly
因此,将对象作为参数传递给gdbus是通过拼写其路径来完成的,例如在我们的例子中
/org/bluez/agent
。在我看来这是没有记录的。顺便说一下,对应的
dbus-send
命令的拼写几乎相同dbus-send --print-reply --system --dest=org.bluez /org/bluez \
--type=method_call org.bluez.AgentManager1.RegisterAgent \
objpath:/org/bluez/agent1 string:KeyboardOnly
但是对于代理对象路径…/org/bluez/agent1表示
dbus-send
,而just/org/bluez/agent表示gdbus
。我认为这方面也没有记录在案。关于linux - 使用gdbus实用程序将对象作为参数传递,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48318942/