Quick Start

Launcher Setup

Steps to getting launcher on a device:

  1. Build configuration
  2. Install configuration
  3. Install application
  4. Start launcher

Build Configuration

To start, you need a Launcher.json file. Using the EMS Portal, this can be easily generated. The Portal will pre-fill the current license key and organization id.

There is an example configuration on the configuration page and another one at the bottom of this page.

Setup the License Key

Ask your Bluefletch contact for your license key, and place it in the configuration file as follows:

{
  "configVersion" : "2020-01-01-start",
  "license" : "paste license key here",
  ...
}

It is suggested that the configVersion is updated each time the configuration file is touched. This field is for reference only.

Setting up your Homescreen

Setting up Role Based Access

Identify the roles that will be returned from your Identity Provider. In the example below, we expect to get both Supervisor and Associates as the named groups. Set up these user groups in the group_inclusion field as follows:

    ...
    "group_inclusion": {
        "Supervisor": [ "AppGroupA", "AppGroupB", "OpenZone" ],
        "Associates": [ "AppGroupB" ],
        "*": [ "OpenZone" ]
    },
    ...

In the above example:

  • Supervisors will see apps from AppGroupA, AppGroupB and OpenZone.
  • Associates will see apps from AppGroupB only.
  • Non logged-in users will see the apps in the OpenZone.

Adding applications to an Application Group

To add a package to a group, add a JSON object with the package field, as shown below.

...
"layouts" : {
   "AppGroupA": [
      { "package" : "com.bluefletch.ems.support" },
      { "package" : "com.android.calculator2" }
    ],
    "AppGroupB" : [ ... ],
    "OpenZone" : [ ... ]
},
...

Bookmarks

To specify a bookmark, add a JSON object as follows:

...
"layouts" : {
   "AppGroupA": [
      { "package" : "com.bluefletch.ems.support" },
      { "package" : "com.android.calculator2" },
      {
        "label" : "Bluefletch Web",
        "url" : "https://bluefletch.com",
        "icon" : "/sdcard/DCIM/icons/bluefletch_logo.png"
      }
    ],
    "AppGroupB" : [ ... ],
    "OpenZone" : [ ... ]
},
...

Folders

To create a folder, you will need to specify the label and the contents which will contain the different apps in the folder. You can use the same syntax for the application object inside the contents of the folder. To put the above applications inside an "App Folder" folder:

...
"layouts" : {
   "AppGroupA": [
      {
        "label" : "App Folder",
        "contents" : [
          { "package" : "com.bluefletch.ems.support" },
          { "package" : "com.android.calculator2" },
          { "label" : "Bluefletch Web", "url" : "https://bluefletch.com",
            "icon" : "/sdcard/DCIM/icons/bluefletch_logo.png"
          }
        ]
      },
      { "package" : "com.google.calendar" }
    ],
    "AppGroupB" : [ ... ],
    "OpenZone" : [ ... ]
},
...


Customizing Labels/Icons

For the complete syntax of an application object, click here.

General Settings

Install configuration

Copy the launcher.json file to the following location:

/sdcard/Downloads/ems/launcher.json

Launcher will pick this file up and move it to:

/sdcard/Android/data/com.bluefletch.launcher/files/blueLauncher/launcher.json

Additionally the Launcher will monitor for any changes to these locations and reapply to the application.

Install application

Download the launcher APK from the EMS Portal Downloads page, and intall the APK via your MDM or sideload via ADB.

adb install ./launcher.apk

The following package will be installed Package: com.bluefletch.launcher

It is suggested that Permissions be granted prior to launching the application.

Permissions via ADB

adb shell pm grant com.bluefletch.launcher android.permission.READ_PHONE_STATE
adb shell pm grant com.bluefletch.launcher android.permission.RECEIVE_BOOT_COMPLETED
adb shell pm grant com.bluefletch.launcher android.permission.READ_EXTERNAL_STORAGE
adb shell pm grant com.bluefletch.launcher android.permission.WRITE_EXTERNAL_STORAGE
adb shell pm grant com.bluefletch.launcher android.permission.ACCESS_NETWORK_STATE
adb shell pm grant com.bluefletch.launcher android.permission.ACCESS_FINE_LOCATION
adb shell pm grant com.bluefletch.launcher android.permission.INTERNET
adb shell pm grant com.bluefletch.launcher android.permission.NFC

Permission via SOTI

afw_set_permission_grant_state com.bluefletch.launcher android.permission.READ_PHONE_STATE allow
afw_set_permission_grant_state com.bluefletch.launcher android.permission.RECEIVE_BOOT_COMPLETED allow
afw_set_permission_grant_state com.bluefletch.launcher android.permission.READ_EXTERNAL_STORAGE allow
afw_set_permission_grant_state com.bluefletch.launcher android.permission.WRITE_EXTERNAL_STORAGE allow
afw_set_permission_grant_state com.bluefletch.launcher android.permission.ACCESS_NETWORK_STATE allow
afw_set_permission_grant_state com.bluefletch.launcher android.permission.ACCESS_FINE_LOCATION allow
afw_set_permission_grant_state com.bluefletch.launcher android.permission.INTERNET allow
afw_set_permission_grant_state com.bluefletch.launcher android.permission.NFC allow

Start launcher

To start, use com.bluefletch.launcher.Launcher

Example ADB Command

adb shell am start -n com.bluefletch.launcher/com.bluefletch.launcher.Launcher

Example AirWatch Command

mode=explicit,action=android.action.intent.MAIN,package=com.bluefletch.launcher,class=com.bluefletch.launcher.Launcher,broadcast=false

On first execution, the launcher will set itself as the defualt Launcher and reboot the device.

Example Configuration

{
    "configVersion" : "2019.12.20.1",
    "license":"license here.",
    "group_inclusion": {
        "Supervisor": [ "AppGroupA", "AppGroupB", "*" ],
        "Associates": [ "AppGroupB" ],
        "*": [ "*" ]
    },
    "layouts" : {
        "AppGroupA":[
            {
                "package" : "com.symbol.wfc.pttpro"
            },
            {
                "package": "com.bluefletch.ems.deviceinformation"
            },
            {
                "label" : "Vision Settings",
                "package": "com.bluefletch.ems.vision",
                "activity": "PreferenceActivity"
            },
            {
                "label" : "Vision Training",
                "package": "com.bluefletch.ems.vision",
                "activity": "FaceTrainActivity"
            },
            {
                "label" : "Tools",
                "contents":[
                    {
                        "package":"com.bluefletch.acc.themerapp"
                    },
                    {
                        "package" : "com.bluefletch.ems.support"
                    },
                    {
                        "package" : "com.symbol.datawedge"
                    },
                    {
                        "package" : "com.symbol.tool.stagenow"
                    },
                    {
                        "package": "com.bluefletch.go"
                    }
                ]
            }
        ],

        "AppGroupB":[
            {
                "package" : "com.symbol.wfc.pttpro"
            },
            {
                "label" : "Vision Training",
                "package": "com.bluefletch.ems.vision",
                "activity": "FaceTrainActivity"
            },
            {
                "package": "com.bluefletch.ems.support"
            },
            {
                "package": "com.android.calculator2"
            },
            {
                "package": "com.bluefletch.ems.deviceinformation"
            }
        ],
        "*": [
            {
                "label" : "BlueFletch",
                "url" : "https://bluefletch.com",
                "icon" : "/sdcard/DCIM/icons/bluefletch_logo.png"
            },
            {
                "package": "com.android.calculator2"
            },
            {
                "package" : "com.bluefletch.ems.support"
            },
            {
                "label" : "Tools",
                "contents":[
                    {
                        "package":"com.bluefletch.acc.themerapp"
                    },
                    {
                        "package" : "com.symbol.datawedge"
                    },
                    {
                        "package" : "com.symbol.tool.stagenow"
                    },
                    {
                        "package": "com.koushikdutta.vysor"
                    }
                ]
            }
        ]
    },
    "settings": {
        "idleTimeInMinutes": 120,
        "maxSessionTimeInMinutes": 480
    },
    "emsSupportTool" : {
        "orgId":"orgnaization_id_here"
    }
}