C
应用列表
演示了从 QtAndroidAutomotive.Base 模块中使用的 AndroidAppsUtils QML 组件。
构建和部署示例
请参阅有关构建和部署 Android Automotive Qt 示例的具体步骤specific steps。
概述
本示例演示了如何通过显示 Android 或 Android Automotive 设备中安装的应用程序列表并处理相关事件来使用 AndroidAppsUtils QML 组件。应用程序的 UI 使用 Qt Quick 创建。
启动应用程序时,除了系统应用之外的所有已安装应用程序都以 GridView 的形式显示。点击图标启动应用。每个图标也响应长按,显示额外的 Menu
。 Menu
中包含两个可点击项,用于显示应用信息页面或卸载应用。应用列表还记录已安装或卸载的应用程序,并将它们添加到列表中,同时在相应事件上显示文本通知。
使用模型
已安装应用程序模型基于 C++ 的 QAbstractListModel,并扩展到 QML。根据需要,模型可以使用 ListView 或 GridView。
在此示例中,使用了一个 GridView。如下所示将模型附加到网格
GridView { id: gridView anchors { left: parent.left right: parent.right bottom: parent.bottom top: updatesText.bottom margins: window.marginSize } clip: true cellWidth: (window.isLandscape ? window.height : window.width) / 5.5 cellHeight: cellWidth * 2 model: AndroidAppsUtils.installedAppsModel
然后,我们设置网格的代理以使用包含应用图标的 Image
并处理长按以显示额外的 Menu
和应用名称的 Text
。
delegate: Rectangle { id: appDelegate width: gridView.cellWidth - window.marginSize height: gridView.cellHeight - window.marginSize readonly property int iconSize: height / 2.25 required property var model Image { id: appIcon height: appDelegate.iconSize width: appDelegate.iconSize source: appDelegate.model.AppIconString anchors.horizontalCenter: parent.horizontalCenter MouseArea { id: startrightBtn anchors.fill: parent onClicked: AndroidAppsUtils.startApp(appDelegate.model.packageName) onPressAndHold: contextMenu.popup(mouseX, mouseY) } Menu { id: contextMenu MenuItem { enabled: !appDelegate.model.isSystemApp text: "Uninstall" icon.source: "icons/delete.png" onClicked: AndroidAppsUtils.uninstallApp(appDelegate.model.packageName) } MenuItem { text: "Info" icon.source: "icons/info.png" onClicked: AndroidAppsUtils.showAppInfo(appDelegate.model.packageName) } } } Text { id: appName text: appDelegate.model.appName width: appDelegate.width anchors { top: appIcon.bottom topMargin: window.marginSize / 3 } horizontalAlignment: Text.AlignHCenter elide: Text.ElideRight wrapMode: Text.Wrap font.pointSize: 14 maximumLineCount: 2 } } }
使用 API 调用
在 GridView
代理内部,我们可以触发对 Java API 的某些调用以执行常见的操作,例如启动、卸载和显示应用的信息。例如,启动应用
onClicked: AndroidAppsUtils.startApp(appDelegate.model.packageName)
AndroidAppsUtils 组件报告应用程序安装或卸载的任何事件。要接收这些信号并对此执行相应的操作,我们需要实现 Connections
,如下所示
Connections { target: AndroidAppsUtils function onAppUninstalled(message) { updatesText.text = qsTr("Uninstalled: %1").arg(message); } function onAppInstalled(app) { updatesText.text = qsTr("Installed: %1").arg(app.packageName); } } }
另请参阅Qt for Android.
在某些 Qt 许可证下提供。
了解更多信息。