GMS (Google Mobile Services) devices have access to Managed Google Play, which allows installation of approved Play Store apps and can apply a managed configuration to them. This isn’t available to AOSP devices or any devices using private enterprise apps, but we can use managed configurations to bridge the gap between GMS and AOSP devices.

For IT managers, Google’s Play Store solution is understandable when configuring the applications used in their corporate workplaces for BYOD (bring your own device) scenarios. Esper, on the other hand, enables dedicated device fleets for specialized use cases. We needed a solution accessible across all Android devices that we support running Android 5 and above, regardless of whether they’re running GMS Android or AOSP Android. 

A Play Store implementation potentially requires IT managers to manually configure dozens of GUI options separately. In our solution, we handle managed configurations using flexible JSON rather than a GUI — this makes it available in ASOP since it’s not Play Store dependent. Configurations can be easily reduced to just what you need and then copy and pasted, opening up easy reuse and scripting with our namespace API

Managed Configuration Options for Chrome in Managed Google Play

How can I see an app’s available managed configuration options?

Since the Google Play Store has a UI that shows an app’s managed configuration options, you may be wondering how to address this when Google Play isn’t an option. Google Play actually pulls the managed configuration options from the app’s APK (Android Package Kit) to display it in the GUI, so you can also access this using Android Studio. Some developers also document their app’s available managed configuration options, which is probably a good place to start. If that’s not an option, however, we’ll show you how to access this info.

In Android Studio, you can analyze that APK and view its managed configuration options under res/xml/app_restrictions.xml. A description of these options and their predefined values, if available, are further stored in res/resources.arsc to support localization.

Managed Configuration Options for the Spectralink Buttons APK

For example, using Spectralink’s Buttons OEMConfig app, the second option available is “button_left,” which determines the binding of the device’s left button. Its accepted values are “No action,” “Home key,” “Back key,” “Menu key,” “PTT,” “Alarm,” “Volume up,” “Volume down,” “Run application,” “open_url,” “Scanner,” “CUSTOM1,” “CUSTOM2,” “CUSTOM3,” and “CUSTOM4.”

Let’s try the “Run application” option. There is a corresponding configuration option below called “button_left_run_application” where we define the package name of the app we want to run when that button is pressed. In this example, we’re going to use the preloaded camera app’s package name, which is “com.android.camera2.”

Together in a JSON managed configuration, it looks like this:

{
  "button_left": "Run application",
  "button_left_run_application": "com.android.camera2"
}

How to apply a managed configuration in the Esper Console

We previously covered how the Esper Cloud API works for Google Chrome and is a great way for developers to automate managed configurations, but APIs are less accessible to most users, so we needed to ease that burden. But how do you accomplish this using Esper’s Console?

Pick the device from Devices & Groups that you want to apply a managed configuration. Select Apps, and find the app. Click on the corresponding ellipsis on the right to open up the dropdown, and select Manage Configurations.

A dialog will appear. Drop in the corresponding JSON code for the intended managed configuration. Hit Apply, and the config is pushed out to the app. We save the JSON pushed to that device in the Manage Configurations dialog box. If you wish to push a different policy, click the Edit button, make the needed changes, and hit Apply.

JSON Code Pop-Up for Esper’s Managed Configurations

Verify that the managed configuration was successfully executed on the device by checking the Event Feed (for offline devices, the command will only be queued — if they come online with a 24 hour window, the change will be executed).

Esper Console Event Feed Showing Successful Execution of Managed Configuration Command

How to apply a managed configuration to a group of devices

If you need to apply a managed configuration to an entire group, select the group properties and specify the package name for which you want to apply the managed configuration, and it will be pushed to all devices in the group regardless of whether or not they have that app. If they do not have the app, nothing changes.

Defining a Managed Configuration at the Group Level

You’ll notice that the number of online and offline devices is shown. You can decide if you want to target only the online devices or click the queue requests for the offline devices option. If those devices come online within 24 hours, the update will be automatically pushed out. If you need to go beyond 24 hours, our REST API enables more advanced functionality.

If you want to see the status of the group command either view the Event Feed or click the “i” button in the upper right-hand corner to display a status slide out. Click on Details to see the status of executing the command on the group’s individual devices and those that are queued because they are offline if that option was selected.

Viewing the Status of Pushing a Managed Configuration to a Device Group

Have a mixed device fleet? Esper has the solutions you need

In summary, Esper’s support for managed configurations allows you to apply this nifty configuration technique for apps that run on AOSP as well as GMS devices. Whether you use our Cloud API or Esper Console, we have your managed configuration needs covered. Questions? Don’t hesitate to reach out. Not yet an Esper customer? Sign up today and get your first 100 devices free for life.