What's New in AppStudio Framework 4.4

01-26-2021 12:55 PM
Esri Regular Contributor
0 0 153

The AppStudio Framework, or AppFramework, contains platform-neutral QML components to allow you to create apps that work across multiple platforms. The components that the AppFramework provides are intended for use in providing base functionality for your app, including managing file paths, networking interfaces, and image manipulation, as well as tools specific to working within the AppStudio environment. The AppFramework library is unique in that it has features and capabilities that are neither natively provided by the underlying Qt framework nor the ArcGIS Runtime but are necessary and commonly used for developing apps. We are excited to share new features and enhancements added to AppStudio 4.4 release with you in this blog post.


New ReadCSVFiles method

The comma separated values format (CSV) has been widely used for exchanging and converting data between various spreadsheet programs, this format is very common including in ArcGIS Survey123. The AppFramework FileFolder component now parses CSV files using the internet standard RFC 4180 and the AppFramework SQL component now uses the internet standard RFC 4180 for improved virtual table handling of CSV files. 

This code sample shows potential usage of FileFolder.readCvsFile() method, using all provided options. 




Item {
    FileFolder {
        id: testFolder
        path: "TestFolder"

    function runTest() {
        var options = {"delimiter": "|"}
        var inputFile = AppFramework.resolvedPath(testFolder.filePath("test.csv"));

        try {

            testFolder.readCsvFile(inputFile, options);

        } catch (error) {
              console.log("Error in " + error.fileName + ":" + error.lineNumber + ": " + error.message);


    Component.onCompleted: {





New BrightnessContrastFilter component

The BrightnessConstrastFilter component provides a way for an app to change video output by allowing for brightness and contrast to be modified before being passed on to another filter. When used in conjunction with another video filter, it can result in improving the digital image processing in that video filter. For example, when used with BarcodeVideoFilter, it can improve the capture of barcodes.

This code sample shows a potential usage of BrightnessContrastFilter, altering the contrast of the video output before passing it on to BarcodeFilter.





Page {
    VideoOutput {
        anchors.fill: parent
        filters: [ brightnessContrastFilter, barcodeFilter ]
    BrightnessContrastFilter {
        id: brightnessContrastFilter
        contrast: 0.20
    BarcodeFilter {
        id: barcodeFilter
        onDecoded: console.log("barcode.decoded: ", barcode, barcodeType, barcodeTypeString)





AppFramework OpenURLExternally method enhancements

This method, bool AppFramework.openUrlExternally(URL),  opens the provided URL in an external app. This method can accept multiple kinds of URLs, and will behave differently depending on what kind of URL is provided.

If given a web URL, the destination will open in the device's default browser. On Android, a share sheet will open allowing the user to select a preferred browser. If given an app link, the app will open if installed on the user's device. Otherwise, it will behave in the same way as a web URL. If given an app schema, the app will open if installed on the user's device. Otherwise, it will do nothing. If given a file URL, Android will open a share sheet to select an app to open the file with, iOS will open it in a document viewer, and all other platforms will open the file using the default app used for its MIME type.

The URL parameter for this method is the URL to open in an external app. This can be a web URL, an app link, an app schema, or a file URL.


Other changes and new features include the following:

  • The Management AppFramework plug-in has been updated to provide support for AppConfig and Enterprise Mobile Management (EMM) on Windows through the use of Windows Registry subkeys and values.
  • Support added for new background location permission introduced in Android 11.
  • Improved robustness of the captureToLocation property in CameraDialog to detect if the fileUrl is a folder or a file.
  • Improvements in AppFramework.openUrlExternally to support App Links, URL Schemes, Content URI and file URLs.
  • SecureStorage in Android is using a stronger and better encryption algorithm. 
  • Updated from OpenSSL 1.1.1d to OpenSSL 1.1.1h.


Other bug fixes and enhancements are listed in this blog post


Learn more about AppStudio:

  • New to AppStudio? Check out this website to learn more about what ArcGIS AppStudio can do to you and your organization.
  • Check out our recent workshop recordings to get started with creating native apps using AppStudio.
  • Let us know about your creations built using AppStudio to be featured in AppStudio Showcase Gallery.
  • Provide your ideas and suggestions to us on ArcGIS Ideas site.
  • Follow us on Twitter @ArcGISAppStudio to keep up-to-date on the latest information.
  • The AppStudio team periodically hosts workshops and webinars; please sign up for the AppStudio newsletter if you are interested in information regarding AppStudio events.
About the Author
Product Evangelist for ArcGIS AppStudio