使用dbus-send
a{sv}
出现问题
使用in_signature='a{ss}'
调用方法似乎可以使用
以下命令行:
dbus-send --dest="org.test.TestService"
/org/test/TestService/object org.test.TestService.method1 dict:string:string:"a","1","b","2"
现在我想要一个带有变量类型值的字典
(in_signature=a{sv}
),
如何在dbus-send
中使用它?
答案 0 :(得分:10)
dbus-send
如上所述,dbus-send
不支持所有Dbus类型。来自dbus-send man page:
此外,dbus-send不允许空容器或嵌套容器(例如变体数组)。
gdbus
埋在https://www.freedesktop.org/software/gstreamer-sdk/data/docs/2012.5/gio/gdbus.html中,我们看到了这一点:
gdbus call --session \
--dest org.freedesktop.Notifications \
--object-path /org/freedesktop/Notifications \
--method org.freedesktop.Notifications.Notify \
my_app_name \
42 \
gtk-dialog-info \
"The Summary" \
"Here's the body of the notification" \
[] \
{} \
5000
奖励:此方法返回ID,因此您可以关闭或替换通知。
答案 1 :(得分:6)
虽然D-Bus支持a{sv}
等签名,但dbus-send不支持。这来自dbus-send man page:
“...... D-Bus支持的类型多于这些类型,但dbus-send目前不支持。此外,dbus-send不允许空容器或嵌套容器(例如变体数组)。“
所以据我所知,你不能使用dbus-send发送string:variant的字典。
答案 2 :(得分:0)