ApplicationManager QML类型

应用程序模型和控制台。更多...

导入语句import QtApplicationManager.SystemUI 2.0

属性

信号

方法

详细描述

ApplicationManager单例类型是应用程序管理器的核心。它为所有功能提供DBus和QML API。

此类型由QAbstractListModel派生,因此可以直接作为应用程序网格视图中的模型使用。

此模型中包含以下角色:

角色名称类型描述
applicationId字符串应用程序的唯一标识符,表示为字符串(例如Browsercom.pelagicore.music
name字符串应用程序的名称。如果可能,已经翻译为当前区域设置。
icon字符串应用程序图标的URL。
isRunning布尔表示应用程序运行状态的布尔值。
isStartingUp布尔表示应用程序是否正在启动但尚未完全可操作的布尔值。
isShuttingDown布尔表示应用程序当前是否正在关闭的布尔值。
isBlocked布尔当应用程序管理器需要阻止应用程序运行时,此布尔值将被设置:这通常只在没有应用更新时发生。
isUpdating布尔表示应用程序当前是否正在安装或更新的布尔值。如果为true,可以使用updateProgress跟踪实际进度。
isRemovable布尔表示此应用程序是否可由用户删除;动态安装的所有第三方应用程序为true,所有系统应用程序为false
updateProgress实数isUpdatingtrue时,查询此角色返回实际进度,以浮点值在0.01.0范围内表示。
codeFilePath字符串主"可执行文件"的文件系统路径。此文件格式取决于实际运行时:对于QML应用程序,"可执行文件"是main.qml文件。
categorieslist此应用程序通过元数据文件注册的类别(目前尚在开发中)。
version字符串此应用程序安装的当前版本。
applicationApplication底层应用程序对象,可在模型代理之外快速访问属性。

注意: 基于索引的API当前无法通过DBus访问。但是,基于ID的API提供了相同的功能。

导入后,您可以像下面这样使用ApplicationManager单例:

import QtQuick 2.0
import QtApplicationManager.SystemUI 2.0

ListView {
    id: appList
    model: ApplicationManager

    delegate: Text {
        text: name + "(" + applicationId + ")"

        MouseArea {
            anchors.fill: parent
            onClick: ApplicationManager.startApplication(applicationId)
        }
    }
}

属性文档

containerSelectionFunction : var

当应用程序管理器需要实例化运行应用程序的容器时,将调用此JavaScript函数回调。有关更多信息,请参阅容器选择配置


[只读] count : int

此属性保存可用的应用程序数量。


[只读] securityChecksEnabled : bool

此属性保存是否启用了安全相关检查。

另请参阅 no-security


[只读] shuttingDown : bool

此属性用于在应用程序管理器进入其关闭阶段时通知系统UI。已防止新的应用程序启动,但系统UI可能想要在此状态下实施其他限制。


[只读] singleProcess : bool

此属性指示应用程序管理器是在单进程模式还是多进程模式下运行。


[只读] systemProperties : var

返回通过配置文件设置的特定于项目 系统属性


[只读] windowManagerCompositorReady : bool

此属性初始值为 false,一旦 Wayland 合成器准备好接受其他进程的连接,就会变为 true。在多进程模式下,这发生在 System UI 的主 QML 载入后隐式发生。


信号文档

applicationAboutToBeRemoved(string id)

在通过 ApplicationInstaller 移除由 id 标识的现有应用程序之前,会发出此信号。

注意:除了正常的“低级” QAbstractListModel 信号外,应用程序管理器还将发出这些“高级”信号,以支持无法直接在 ApplicationManager 模型上运行的 System-UI:applicationAdded、applicationAboutToBeRemoved 和 applicationChanged

注意:相应的处理函数是 onApplicationAboutToBeRemoved


applicationAdded(string id)

当通过 ApplicationInstaller 安装由 id 标识的新应用程序后,会发出此信号。在发出此信号之前,模型已经更新。

注意:除了正常的“低级” QAbstractListModel 信号外,应用程序管理器还将发出这些“高级”信号,以支持无法直接在 ApplicationManager 模型上运行的 System-UI:applicationAdded、applicationAboutToBeRemovedapplicationChanged

注意:相应的处理函数是 onApplicationAdded


applicationChanged(string id, list<string> changedRoles)

当由 id 标识的应用程序上任意或多个数据角色(由 changedRoles 标记)发生变化时,会发出信号。如果 changedRoles 参数中的列表为空,则意味着应考虑所有角色都已更改。

注意:除了正常的“低级”QAbstractListModel 信号外,应用程序管理器还将为无法直接在 ApplicationManager 模型上工作的系统界面发出这些“高级”信号:applicationAddedapplicationAboutToBeRemoved 和 applicationChanged。

注意:相应的处理程序为 onApplicationChanged


applicationRunStateChanged(string id, enumeration runState)

当由 id 标识的应用程序的 runState 发生变化时,将发出此信号。可能值为由 runStateApplicationObject 类型中定义。

例如,此信号可以用于在多进程模式下重启崩溃的应用程序。

Connections {
    target: ApplicationManager
    function onApplicationRunStateChanged() {
        if (runState === Am.NotRunning
            && ApplicationManager.application(id).lastExitStatus === Am.CrashExit) {
            ApplicationManager.startApplication(id);
        }
    }
}

另请参阅 Application::runState

注意:相应的处理程序为 onApplicationRunStateChanged


applicationWasActivated(string id, string aliasId)

当通过 ApplicationManager API(可能通过在 aliasId 中提供的别名)以 id 标识的应用程序(重新)启动时,将发出此信号。

在这种情况下,窗口管理器应负责提升应用程序的窗口。

注意:相应的处理程序为 onApplicationWasActivated


openUrlRequested(string requestId, string url, string mimeType, list<string> possibleAppIds)

当应用程序管理器被请求打开一个URL时,将发出此信号。这可能会发生,通过在应用程序中调用

  • Qt.openUrlExternally,
  • 在系统 UI 中调用 Qt.openUrlExternally,
  • 在系统 UI 中调用 ApplicationManager::openUrl
  • 通过 D-Bus 调用 io.qt.ApplicationManager.openUrl

注意:只有当连接了接收器时,才会发出此信号 - 请参阅 openUrl 了解后备行为。

此信号的接收器可以检查请求的 url 和其 mimeType。然后,它可以选择调用 acknowledgeOpenUrlRequest 从提供的 possibleAppIds 中选择,或调用 rejectOpenUrlRequest 忽略请求。在这两种情况下,都需要发送唯一标识符 requestId。不调用这些函数之一将导致内存泄漏。

注意:相应的处理程序为 onOpenUrlRequested

另请参阅openUrlacknowledgeOpenUrlRequestrejectOpenUrlRequest


方法文档

acknowledgeOpenUrlRequest(string requestId, string appId)

指示应用管理器继续处理以打开URL的请求,该URL由requestId标识。所选择的appId必须是提供给openUrlRequested信号接收者的possibleAppIds之一。

参考openUrlopenUrlRequested


ApplicationObject application(string id)

返回与给定应用程序id对应的application,如果id不存在则返回null

注意:返回的应用程序对象的拥有权仍然属于应用程序管理器。如果您想保存此指针,可以使用QAbstractListModel信号或applicationAboutToBeRemoved信号来得知如果对象即将在C++端被删除。


ApplicationObject application(int index)

返回模型中给定indexapplication,如果索引无效则返回null

注意:返回的应用程序对象的拥有权仍然属于应用程序管理器。如果您想保存此指针,可以使用QAbstractListModel信号或applicationAboutToBeRemoved信号来得知如果对象即将在C++端被删除。


list<string> applicationIds()

返回所有可用应用程序id的列表。这可以用于通过get()进一步查询特定信息。


list<string> capabilities(string id)

返回由用户授权给由id标识的应用的所有功能的列表。如果应用程序id无效,则返回空列表。


bool debugApplication(string id, string debugWrapper, string document)

指示应用程序管理器使用其唯一的id启动应用程序,就像startApplication一样。应用程序是通过给定的debugWrapper启动的。可选参数document将按原样提供给应用程序 - 最常见的情况是,这用于引用要显示的文档。

返回一个表示成功的bool值。有关更多信息,请参阅ApplicationManager::startApplication的全文档。

有关如何设置和使用这些调试包装器的详细信息,请参阅调试页面。

参考ApplicationObject::debug


object get(string id)

获取由id标识的应用的程序的数据模型,作为JavaScript对象。有关预期对象字段的角色名称,请参阅角色名称

如果指定的id无效,则返回空对象。


对象 get(int index)

以JavaScript对象的形式检索位于index处的模型数据。请参阅角色名称,了解期望的对象字段。

如果指定的index无效,则返回空对象。

注意:如果您只想从QML访问单个属性,这会非常低效;请使用application()来直接访问应用对象的属性。


列表<字符串> identifyAllApplications(int pid)

验证进程标识为pid的进程是否由应用管理器启动。

如果同一个容器进程中运行多个应用,该函数将返回所有这些应用的ID。

成功时返回包含应用ids的列表,失败时返回空列表。


字符串 identifyApplication(int pid)

验证进程标识为pid的进程是否由应用管理器启动。

注意:如果同一个容器进程中运行多个应用,该函数将只返回第一个匹配的应用。要检索所有应用ID,请参阅identifyAllApplications()

成功时返回应用的id,失败时返回空字符串。


int indexOfApplication(ApplicationObject application)

application映射到此模型中的位置。如果指定的应用无效,则返回-1


int indexOfApplication(字符串 id)

将给定id的应用映射到此模型中的位置。如果指定的id无效,则返回-1


布尔值 openUrl(字符串 url)

尝试启动可以处理url的应用。应用管理器将首先查看URL的方案

  • 如果是file:,将咨询操作系统的MIME数据库。它将尝试根据文件后缀或文件内容找到匹配的MIME类型。如果成功,应用管理器将使用此MIME类型查找所有声称支持它的应用(请参阅应用清单中的mimeTypes字段)。一个能够处理mp3wav文件的播放器应用可以在其清单中添加此内容
    mimeTypes: [ 'audio/mpeg', 'audio/wav' ]
  • 如果不是file:,应用管理器将咨询声称支持匹配的x-scheme-handler/... MIME类型的内部应用程序数据库。要使您的网络浏览器应用处理http:https: URL,您必须在应用清单中添加此信息
    mimeTypes: [ 'x-scheme-handler/http', 'x-scheme-handler/https' ]

如果至少有一个可能的匹配项,则取决于System UI中连接了openUrlRequested()信号:如果未连接该信号,则将从匹配集合中启动任意一个应用程序。否则,应用管理器将发出openUrlRequested信号并返回true。收信人需要通过acknowledgeOpenUrlRequest选择一个可能的应用程序,或者通过rejectOpenUrlRequest完全拒绝请求。不调用这两个函数之一会导致内存泄漏。

如果应用程序由这两种机制之一启动,则其url将作为要打开的文档通过其ApplicationInterface提供给应用程序。

如果数据库中找到匹配项则返回true,否则返回false

另请参阅openUrlRequestedacknowledgeOpenUrlRequestrejectOpenUrlRequest


rejectOpenUrlRequest(string requestId)

告知应用程序管理器忽略由requestId标识的打开URL的请求。

参考openUrlopenUrlRequested


bool startApplication(string id, string document)

指示应用程序管理器启动识别为其唯一id的应用程序。可选参数document将原样提供给应用程序,通常用于指向要显示的文档。如果id有效且应用程序管理器能够启动运行时插件,则返回true。否则返回false。请注意,即使此调用可能指示成功,应用程序也可能在以后的某个时间点无法正确启动,因为运行时插件中的实际启动过程可能异步。

另请参阅ApplicationObject::start


stopAllApplications(bool forceKill)

告知应用程序管理器停止所有正在运行的应用程序。forceKill参数的含义在运行时依赖于,但通常应始终首先尝试将forceKill设置为false以允许干净的关闭。仅在最后手段的情况下,将forceKill设置为true来杀掉卡住的应用程序。


stopApplication(string id, bool forceKill)

告知应用程序管理器停止一个唯一由id识别的应用程序。forceKill参数的含义在运行时依赖于,但通常应始终首先尝试将forceKill设置为false以允许干净的关闭。仅在最后手段的情况下,将forceKill设置为true来杀掉卡住的应用程序。

另请参阅ApplicationObject::stop


©2019 Luxoft瑞典AB。本文件中包含的文档贡献的版权属于各自的所有者。本文件提供的文档遵照由自由软件基金会发布的《GNU自由文档许可证》第1.3版条款许可。 Qt及其相关标志是芬兰Qt公司及其它国家/地区的商标。所有其他商标均为各自所有者的财产。