IntentHandler QML 类型

处理由应用程序接收到的意图请求的处理程序。 更多...

导入声明import QtApplicationManager.Application 2.0

属性

信号

详细描述

任何在其清单文件中列出意图的应用程序都需要有一个相应的 IntentHandler 实例,实际上能够处理传入的请求。此类提供了灵活性,允许通过单个 IntentHandler 实例处理多个不同的意图 id,或者为每个意图 id(或这些组合中的任意组合)保留专用 IntentHandler 实例。

注意:处理系统 UI 内的意图请求时,必须使用系统 UI 端组件 IntentServerHandler,其工作方式相同,但提供了来自 QML 的所有必要元数据。

这里处理传入的意图请求并发送结果或错误消息的相当标准的方式

Image {
    id: viewer
}

IntentHandler {
    intentIds: [ "show-image" ]
    onRequestReceived: {
        var url = request.parameters["url"]
        if (!url.startsWith("file://")) {
            request.sendErrorReply("Only file:// urls are supported")
        } else {
            viewer.source = url
            request.sendReply({ "status": source.status })
        }
    }
}

属性文档

intentIds : list<string>

每个处理程序至少需要注册一个唯一意图 id,它将处理。无法注册多个具有相同意图 id 的 IntentHandlers。

注意:在此组件完成后对此属性的任何更改都将没有效果。


信号文档

requestReceived(IntentRequest request)

此信号将在针对处理程序的 intentIds 属性通过每个传入的意图 request 触发一次。

可以同步或异步处理请求。一旦处理程序生成了结果或检测到错误条件,它应该调用 IntentRequest::sendReply() 或 IntentRequest::sendErrorReply() 分别将回复发送给请求方。即使您的意图没有返回值,您仍然需要发送一个空对象 {} 回复来表明意图请求已成功处理。

仅第一个对这些函数的调用将产生效果。后续调用将被忽略。

如果在 系统的指定超时间隔 内未调用这些函数,系统将向原始发送方发送一个隐式的“由于超时而失败”错误回复。

注意:相应的处理程序是 onRequestReceived


版权所有© 2024 The Qt Company Ltd. 本文档中包含的贡献归其各自所有者所有。本文档提供的内容根据 GNU自由文档许可版本1.3 的条款许可,该许可由自由软件基金会发布。Qt及其相关标志是The Qt Company Ltd.在芬兰和/或其他国家的商标。所有其他商标均为其各自所有者的财产。