我想用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/

10-13 04:55