QML-тип IntentHandler
Обрабатывает вызов интента. Подробнее…
| Строка импорта: | #include <intent_handler.h> |
Сигналы
| void invoked (const QJsonObject &data, QObject *response) | Испускается в момент вызова интента. |
Свойства
| QString intentName | Имя интента. |
| QStringList readFilePaths | Файлы, отправленные в режиме "только чтение". |
| QStringList writeFilePaths | Файлы, отправленные в режиме "чтение-запись". |
Подробное описание
Обрабатывает вызов интента.
Элемент IntentHandler можно использовать в QML-коде для обработки входящих вызовов интентов. В самом простом виде его использование выглядит так:
... Код QML ...
IntentHandler {
intentName: "X-ReverseText"
onInvoked: {
// Сигнал invoked() содержит параметр "data", который представляет собой
// данные, переданные инициатором вызова, а также объект "response", чей метод
// send() должен быть вызван для отправки ответа обратно клиенту.
var message = data['message']
// Инвертировать строку
var reversed = message.split("").reverse().join("")
// Отвечает инициатору вызова
response.send({'reversedMessage': reversed})
}
}
Передача файлов в ответах
Чтобы отправить файл обратно вызывающему приложению, необходимо указать его путь в одном из полей ответного сообщения и задать JSON‑путь к этому полю в свойстве readFilePaths (для файлов, возвращаемых в режиме "только чтение") или в свойстве writeFilePaths (для режима "чтение‑запись"). Например, если приложение определяет интент "X-FilePicker", чтобы позволить пользователю выбрать некоторые файлы и вернуть их вызывающему приложению, оно может реализовать его следующим образом:
IntentHandler {
intentName: "X-FilePicker"
readFilePaths: "chosenFiles[*]"
onInvoked: {
// Предположим, что данный код показывает пользователю диалог и возвращает выбранные
// файлы
var files = UI.ChoseFiles(...)
// Отвечает инициатору вызова
response.send({'chosenFiles': files})
}
}
См. также invoked(), IntentsInvoker
Описание функций-членов
invoked
| void IntentHandler::invoked (const QJsonObject & data, QObject * response ) | signal |
Испускается в момент вызова интента.
Сигнал испускается при вызове нашего интента другим приложением. Входные данные закодированы как
JSON-объект в параметре data, в то время как параметр response представляет собой объект,
имеющий метод send(), который должен быть вызван после завершения обработки интента. Хотя
обработку интента рекомендуется выполнять как можно быстрее, бывают случаи, когда интент требует
взаимодействия с пользователем или другими внешними устройствами. В таких ситуациях можно сохранить
объект response в другой переменной с более длительным временем жизни и вызвать его метод send()
позже, уже после того, как этот обработчик сигнала вернул управление.
Параметры
| data | JSON-объект, содержащий входные данные |
| response | Объект Qt, предназначенный для отправки ответа. Он имеет метод send(), который принимает JSON-объект, отправляемый в качестве ответа вызывающему приложению |
Примечание
Метод send() у объекта ответа должен вызываться всегда, даже если у интента нет выходных
параметров. В такой ситуации достаточно вызвать response.send({}), который доставит пустой ответ
вызывающей стороне.
Описание свойств
intentName
| QString IntentHandler::intentName | readwrite |
Имя интента.
Имя интента, который обрабатывается данным элементом. Следует учитывать, что если используемый
интент не входит в число стандартных, его имя обязано начинаться с символов "X-".
readFilePaths
| QStringList IntentHandler::readFilePaths | read |
Файлы, отправленные в режиме "только чтение".
Это свойство должно быть установлено, если ответ интента содержит файл, который необходимо передать в режиме "только чтение" приложению, вызвавшему этот интент. См. раздел Передача файлов в ответах для пояснений.
writeFilePaths
| QStringList IntentHandler::writeFilePaths | read |
Файлы, отправленные в режиме "чтение-запись".
Это свойство должно быть установлено, если ответ интента содержит файл, который необходимо передать в режиме "чтение-запись" приложению, вызвавшему этот интент. См. раздел Передача файлов в ответах для пояснений.