应用程序间通信

AppStudio AppFramework 可提供 InterAppCommunication 插件,用于控制您的应用程序与其他应用程序之间交互的组件。 建议在使用功能与应用程序进行通信之前,设置默认应用程序。 要使用此功能,您首先需要包含以下 import 语句:

import ArcGIS.AppFramework.InterAppCommunication 1.0

有关此功能的示例,请参阅 ArcGIS AppStudioAppStudio 示例 GitHub 资料档案库中提供的示例应用程序。

电子邮件

AppStudio 3.1 之前,最好使用 UrlInfo 组件将预填充电子邮件集成到您的应用程序中,并使用 queryParameters 属性通过 mailto URL 来传递电子邮件的主题和正文。 以下代码示例使用 UrlInfo 组件来创建包含系统详细信息的电子邮件:

Button {
    text: "Generate Email"
    
    onClicked: {
        var urlInfo = AppFramework.urlInfo("mailto:example@example.com"), //Instantiates UrlInfo with an email address
            deviceDetails = [ //Collects information about both the device and app
                "%1: %2 (%3)".arg("Device OS").arg(Qt.platform.os).arg(AppFramework.osVersion),
                "%1: %2".arg("Device Locale").arg(Qt.locale().name),
                "%1: %2".arg("App Version").arg(app.info.version),
                "%1: %2".arg("AppStudio Version").arg(AppFramework.version),
            ];
        urlInfo.queryParameters = { //Uses queryParameters property to populate email subject and body
            "subject": "%1 %2".arg("Feedback for").arg(app.info.title),
            "body": "\n\n%1".arg(deviceDetails.join("\n"))
        };
        Qt.openUrlExternally(urlInfo.url); //Uses Qt framework to open constructed UrlInfo
    }
}

此方法存在局限性,它不允许将电子邮件发送给多个收件人,且不支持附件。 AppStudio 3.1 引入了 EmailComposer 组件,专门用于打开发往设备默认电子邮件客户端的预填充草稿电子邮件。

以下代码示例将演示如何使用 EmailComposer 组件来创建与上面的 UrlInfo 示例相同的表单电子邮件,这次我们使用 ccbcc 属性向多人发送。

EmailComposer {
    id: emailcomposer
    to: "example@example.com"
    cc: ["example2@example.com", "example3@example.com"]
    bcc: "example4@example.com"
    subject: "Feedback for " + app.info.title
    body:
        "Device OS:" + Qt.platform.os + AppFramework.osVersion + "<p>" +
        "Device Locale:" + Qt.locale().name + "<p>" +
        "App Version:" + app.info.version + "<p>" +
        "AppStudio Version:" + AppFramework.version
    html: true
}

Button {
    id: openEmailButton
    text: qsTr("Generate Email")
    onClicked: {
        emailcomposer.show()
    }
}
注:

目前,EmailComposer 组件在各个平台上的行为存在许多不同之处。 有关详细信息,请参阅 EmailComposer 的 API 参考


在本主题中
  1. 电子邮件