IntentHandler QML 类型
用于处理由应用程序接收到的意图请求的处理程序。 更多信息...
导入语句 | import QtApplicationManager.Application 2.0 |
继承自 |
属性
- intentIds : list<string>
信号
- requestReceived(IntentRequest request)
详细描述
任何在其清单文件中列出意图的应用程序都需要有一个相应的 IntentHandler 实例,该实例能够实际处理传入的请求。此类提供了通过单个 IntentHandler 实例处理多个不同的意图 id 的灵活性,或者为每个意图 id(或任何这些的组合)拥有一个专门的 IntentHandler 实例。
注意:要在系统 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 }) } } }
属性文档
每个处理程序都需要注册至少一个它将处理的唯一意图 id。不可能有多个 IntentHandlers 注册相同的意图 id。
注意:此属性完成后的任何更改都不会产生效果。
信号文档
requestReceived(IntentRequest request) |
此信号将针对通过其 intentIds 属性注册的每个传入意图 request 发射一次。
请求的处理可以是同步的或异步的。一旦您的处理程序生成了结果或检测到错误条件,就应该分别调用 IntentRequest::sendReply() 或 IntentRequest::sendErrorReply() 来向请求方发送响应。即使您的意图没有返回值,您仍需要发送一个空对象 {}
响应,以表示意图请求已成功处理。
只有对这些函数的第一个调用才有任何效果。后续调用将被忽略。
如果在系统指定的超时间隔内未调用这些函数来响应意图请求,系统将向原始发送方发送一个隐式的“由于超时而失败”的错误响应。
注意:相应的事件处理程序是 onRequestReceived
.
©2019 Luxoft Sweden AB。本文件中包含的文档贡献均为其各自的版权所有者所有。提供的文档是根据《 GNU 自由文档许可协议第 1.3 版》以及自由软件基金会发布的条款许可的,协议链接为:http://www.gnu.org/licenses/fdl.html。Qt 及相关标志是芬兰 The Qt Company Ltd. 及/或全球其他国家的商标。所有其他商标均为其各自所有者的财产。