GLib.Notification 无法使用非空 VariantType 激活操作
Posted
技术标签:
【中文标题】GLib.Notification 无法使用非空 VariantType 激活操作【英文标题】:GLib.Notification fails to activate action with a non-null VariantType 【发布时间】:2022-01-03 22:38:41 【问题描述】:我正在尝试从我的应用程序发送GLib.Notification
并传递string
参数。
动作名称为action-show-chat-view
,注册在我的主应用类的activate ()
方法中:
public class MyApplication : Gtk.Application
protected override void activate ()
// ...
var show_chat_view_action = new GLib.SimpleAction ("action-show-chat-view", GLib.VariantType.STRING);
show_chat_view_action.activate.connect ((parameter) =>
debug ("beep boop");
debug (parameter.get_string ());
);
add_action (show_chat_view_action);
// ...
要发送通知,我执行以下操作:
var notification = new GLib.Notification ("Hello, world");
var target = new GLib.Variant.string ("foobar");
notification.set_default_action_and_target_value ("app.action-show-chat-view", target);
app.send_notification (null, notification); // app is the instance of the MyApplication class above
通知已正确发送并按预期显示,但是当单击通知激活操作时,我收到以下错误:
GLib-GIO-CRITICAL **: 13:04:37.169: g_simple_action_activate: assertion 'simple->parameter_type == NULL ? parameter == NULL : (parameter != NULL && g_variant_is_of_type (parameter, simple->parameter_type))' failed
我尝试过的其他方法:
如果我将GLib.VariantType.STRING
替换为null
,并将null
作为通知上的目标值传递(并删除parameter.get_string ()
),我会看到“哔哔”控制台输出,所以我知道一切都在最少连接正确并调用正确的方法。
我也尝试使用 app.
前缀注册操作,但是我在文档中的某处读到,当通过 Application.add_action ()
添加时,这是隐含的。
我尝试使用类型字符串 s
创建一个操作组,但遇到了同样的错误。
我尝试过使用除STRING
之外的其他Variant
类型
我尝试在发送通知之前添加以下检查以查看类型是否对齐,他们做到了:app.get_action_parameter_type ("action-show-chat-view").equal (target.get_type ())
。如果我使用 app.
前缀,这将失败,但是我认为这是预期的行为,因为它是在没有前缀的情况下注册的?
我查看了 Flatpak 沙盒权限(这部分对我来说是全新的),但由于通知发送成功,我认为这不是问题。
【问题讨论】:
【参考方案1】:这似乎是 xdg-desktop-portal-gtk
: https://github.com/flatpak/xdg-desktop-portal-gtk/pull/359 的一个错误。尽管已修复,但尚未包含在版本中。
关于使用基本/通知记录的问题的一些相关讨论:https://github.com/elementary/notifications/issues/153
【讨论】:
以上是关于GLib.Notification 无法使用非空 VariantType 激活操作的主要内容,如果未能解决你的问题,请参考以下文章
指定为非空的参数为空:无法更新 Spring Boot jpa 中的单个实体字段。导致指定为非空的参数为空
如何使用 PowerShell 删除 OneDrive 中的非空文件夹?
无法启用约束。一行或多行包含违反非空、唯一或外键约束的值。 ASP.NET C#