The "SmartDocs" bar can customize this page to show only the features present on a particular Zebra device.
OSX, MX and Android version information for a device can be found in the Android Settings panel or by querying the device through ADB, EMDK or the MX CSP. More info.
Application Manager (AppMgr) administers the user applications on the device. It can be used to programmatically install, uninstall, upgrade and turn on (or off) the ability to launch an application, all with no need for user interaction. AppMgr also can designate an application as the Default Launcher (invoked when pressing the HOME Key), and can perform other tasks related to the management of applications.
On consumer Android devices, app management generally requires the user to interact with a management UI presented on the device. For corporate scenarios involving management by an Enterprise Mobility Management (EMM) system (sometimes referred to as mobile device management, or MDM), user consent or approval might not be desired as they potentially limit a company's ability to fully control the user apps installed on a device. AppMgr provides such control.
When considering the capabilities of AppMgr, it is important to understand the difference between System apps and User apps. System applications are built into the device and always by default. User applications are not built in, and must be installed before use. Some AppMgr functions apply only to System apps, some only to User apps, and some to both. Each function identifies the class of the app(s) to which it applies.
.apk
, .apks
, .xapk
and .zip
for package-file ActionsPackage names can vary from one Android version to another.
GMS Restricted Mode: In response to security concerns, Zebra has implemented GMS Restricted Mode, which allows administrators to disable some or all GMS apps deemed "safe to disable" without interfering with normal device operations. See GMS Manager for more information.
The evolving security practices employed by Android have changed the user experience in Android 10 to give greater control to the device user. Such changes could impact the enterprise use cases of Zebra customers. To implement the necessary functionality while maintaining device security, MX 10.0 provides the IT administrator with the ability to silently (without device-user interaction) grant application runtime permissions typically used by remote management systems. For some of the Actions executed by this CSP, including Install and Upgrade, apps must be targeted at Android API level 23 (or newer) to be silently granted runtime permissions on devices running Android 10 or later.
The App Manager allows one or more apps to be added to the Battery Optimization "exemption whitelist." While running, apps on this list prevent the device from entering Doze and App Standby power saving modes, thereby preserving their ability to continue functioning and/or providing services. Doze mode conserves battery power by deferring background CPU and network activities when the device is idle. App Standby defers background network activity for apps with which the user has not recently interacted. By default, all non-system apps are subject to Doze and App Standby modes unless added to the whitelist.
For more information, refer to the Android Developer site.
Virtual keyboards (aka soft input panels) are enabled and disabled by referenceing their package name with the desired AppMgr Action. Some of the most common keyboards are listed below:
com.aitype.android.p
com.menny.android.anysoftkeyboard
com.android.inputmethod.latin
com.gamelounge.chroomakeyboard
com.pinssible.fancykey
com.syntellia.fleksy.keyboard
com.google.android.inputmethod.latin
com.gingersoftware.android.keyboard
com.jb.emoji.gokeyboard
com.grammarly.android.keyboard
org.pocketworkstation.pckeyboard
com.whirlscape.minuumfree
kl.ime.oh
org.dslul.openboard.inputmethod.latin
rkr.simplekeyboard.inputmethod
com.touchtype.swiftkey
com.koushikdutta.vysor
Used to enter the Action to perform on an app or app-related setting or action. Actions can apply only to System apps, only to User apps, or to both (as noted in the table below).
NOTES:
See GMS Manager for more information about GMS Restricted.
Note: For Install and Upgrade Actions, apps must be targeted at Android API level 23 (or newer) to be silently granted runtime permission on devices running Android 10 or later.
Parm Name: Action
Used to select the condition under which to report a failure and prevent a system Upgrade.
Shown if: The Action is "Upgrade"
Parm Name: FailureMode
Option | Name | Description | Note | Status | Requires |
---|---|---|---|---|---|
0 | Do nothing | This value (or the absence of this parm from the XML) will cause no change to the Protected List. |
MX: 11.3+ |
||
1 | On all errors | Reports an error and halts the Upgrade Action if any error is detected. |
MX: 11.3+ |
||
2 | Only on Downgrade errors | Reports an error and halts the Upgrade Action only if a Downgrade is detected. |
MX: 11.3+ |
Used to enter the path and file name of the Android .apk
or other supported file in the device file system from which to perform an app installation or upgrade. In addition to .apk
, some devices support .apks
, .xapk
and .zip
"App Bundle" formats for deploying multiple, device-dependent .apk
files (plus optional app data) bundled as a single file. See Notes below.
.apk
file can be used only to Install or Upgrade a User app or to Upgrade a System app..apk
file is by definition a User app since it was not built into the device..apk
file must be signed with the same developer certificate as the app it is intended to upgrade or an error will result..apk
file produced by the same developer that produced the built-in System app. .apks
, .xapk
or .zip
file formats..apk
file(s) and the (optional) corresponding .obb
APK Expansion Files. .apk
MUST contain only a SINGLE base .apk
..apk
and all splits must be identical. .apk
and all splits must share the same signing key..obb
files are used, they must be named according to Google Play naming guidelines. Learn more about App Bundle files.
Input value rules:
.apk
, .apks
, .xapk
or .zip
file. For example: /enterprise/appmgr/Herald.apk
Note: MX 11.3 or later is required for use of .apks, .xapk and .zip App Bundle files.
Shown if: The Action is "Install" or "Upgrade"
Parm Name: APK
Requires:
- OSX: 1.0+
- MX: 4.2+
Used to enter the Package Name(s) of one or more applications for the selected Action. Separate multiple Package Names using commas. Package Name(s) must be specified exactly, and can be acquired from the application developer, by extracting the Package Name from the .apk file or by finding it in the device.
If a Package Name is specified incorrectly in a list, all names following that name are ignored.
Package names can vary from one Android version to another.
Input value rules:
com.mycompany.mypackage
.Shown if: The Action is "Uninstall" or "Set as Default Launcher" or "Enable Application" or "Disable Application" or "Clear Application Cache" or "Remove Application User Data" or "Reserve UID" or "Unreserve UID" or "Allow Application Upgrade" or "Disallow Application Upgrade"
Parm Name: Package
Requires:
- OSX: 1.0,1.3+
- MX: 4.2+
- Android API: 1+
Used to enter the name of the certificate file for signing the application(s) specified in the Package name parameter.
Input value rules:
Shown if: The Protected List Action is "Reserve Application UID"
Parm Name: PackageSignature
Requires:
- MX: 9.2+
Used to enter the Name of the application for the selected Action.
NOTE: To perform the above listed Actions on an application, the Name of that application can be specified instead of the Package Name. The Name is defined as the name that accompanies the application icon in the Android Launcher, App Drawer or Application Manager. This name also is specified in the
app_name
field of thestrings.xml
file.
Input value rules:
app_name
field of the strings.xml
file (i.e. "Calculator")Shown if: The Action is "Launch an application"
Parm Name: ApplicationName
Requires:
- MX: 5.1+
Used to add or remove apps from the Protected List, which allows apps to be exempted from certain constraints.
NOTE: On some devices, protected apps remain on the Recent Apps list after it has been cleared using the "ClearRecentApps" Action.
An app with its Package Name on the Protected List is allowed to:
Status: This feature is discontinued in devices running Android 8.x (Oreo) and later.
Shown if: The Action is "Install" or "Uninstall" or "Upgrade" or "SetDefaultLauncher" or "EnableApplication" or "DisableApplication" or "ClearRecentApps" or "LaunchApplication"
Parm Name: ProtectedListAction
Used to enter the Package Name(s) of the application to add or remove from the Protected List. Separate multiple names using commas. Name(s) must be specified exactly, and can be acquired from the application developer, by extracting the Package Name from the .apk file or by finding it in the device.
If a Package Name is specified incorrectly in a list, all names following that name are ignored.
Package names can vary from one Android version to another.
Input value rules:
com.mycompany.myPackage
com.mycompany.myPackage
,com.mycompany.myOtherPackage
Status: This feature is discontinued in devices running Android 8.x (Oreo) and later.
Shown if: The Protected List Action is "Add Application to Protected List" or "Remove Application from Protected List"
Parm Name: ProtectedListPackage
Requires:
- OSX: 1.2+
- MX: 4.2+
Used to allow blocking of access to App Info for all applications without blocking access to other parts of the Android Settings panel. When disabled, the device user is prevented from using App Info to interfere with the configured set of installed applications.
Since the AppMgr can control which applications are installed, it might be of concern that a device user can use the App Info section of the in-device Android Settings panel to impact an installed application. For example, a device user might terminate (Force Stop) an application, remove application data (Clear Data), or even Uninstall the application completely. If an MDM/EMM system is being used to control the set of installed applications on a device, such user activities might be undesirable.
Compounding the issue, the App Info can be reached from several places in the device UI other than the Android Settings panel. For example, App Info can be reached from the Recent Apps list or from a notification related to the application in the Notification bar.
To prevent device users from using App Info to alter the configured set of installed applications, it might be desirable to prevent the device user from accessing App Info altogether. Of course, AppMgr can be used to disable launching of the System Settings Menu application, prevents access to App Info. But that also prevents access to all other aspects of the Settings panel. A more targeted approach is to block only App Info.
Parm Name: AccessAppInfoAction
Option | Name | Description | Note | Status | Requires |
---|---|---|---|---|---|
0 | Do nothing | This value (or the absence of this parm from the XML) causes no changes to device settings; any previously selected setting is retained. |
OSX: 4.2+ MX: 4.2+ |
||
1 | EnableAccessAllInfo | Enables access to App Info for all applications on the device if access to the Android Settings panel application is enabled. |
OSX: 4.2+ MX: 4.2+ |
||
2 | DisableAccessAllInfo | Disables access to App Info for all application on the device. |
OSX: 4.2+ MX: 4.2+ |
DO NOT USE THIS PARAMETER if the desired behavior is to ALLOW Doze Mode. On devices running Android 7.x (Nougat) and later, all apps by default allow the device to enter Doze Mode to maximize battery life.
Used to enter one or more apps (by Package Name) to be added to the Battery Optimization "exemption whitelist." While running, apps on this list prevent the device from entering power-saving modes. To enter multiple Package Names, separate with commas. Package Name(s) must be specified exactly, and can be acquired from the application developer, by extracting the Package Name from the .apk file or by identifying it in the device. Doze Mode is controlled using the Power Manager CSP.
Input value rules:
com.mycompany.mypackage
IMPORTANT: If a name is specified incorrectly in a list, all names following that name are ignored.
Shown if: The Action is "Battery Optimization"
Parm Name: AddPackageNames
Requires:
- MX: 7.0+
Used to enter one or more apps (by Package Name) to be removed from the Battery Optimization "exemption whitelist." Apps not on list do not prevent the device from entering power-saving modes. To enter multiple Package Names, separate with commas. Package Name(s) must be specified exactly, and can be acquired from the application developer, by extracting the Package Name from the .apk file or by identifying it in the device.
Input value rules:
com.mycompany.mypackage
.Shown if: The Action is "Battery Optimization"
Parm Name: RemovePackageNames
Requires:
- MX: 7.0+
Used to control access to certain (supported) features on a device.
Shown if: The Action is NOT "Do Nothing"
Parm Name: AppFeature
Option | Name | Description | Note | Status | Requires |
---|---|---|---|---|---|
1 | Background Data | Allows the selected app to communicate using background data. |
MX: 9.3+ Android API: 26+ |
This is the On/Off switch for features selected using the App Feature parameter or in the package selected using the App Feature Packages parameter.
Parm Name: AppFeatureAction
Option | Name | Description | Note | Status | Requires |
---|---|---|---|---|---|
0 | Do nothing | This value (or the absence of this parm from the XML) causes no changes to device settings; any previously selected setting is retained. |
MX: 9.3+ Android API: 26+ |
||
1 | Turn On | Enables the selected feature. |
MX: 9.3+ Android API: 26+ |
||
2 | Turn Off | Disables the selected feature. |
MX: 9.3+ Android API: 26+ |
Used to enter the name of the app package(s) on which to perform an App Feature Action. Separate multiple names using commas.
Input value rules:
packagename1
,packagename2
,packagename3
)Shown if: The Action is NOT "Do Nothing"
Parm Name: AppFeaturePackages
Requires:
- MX: 9.3+
- Android API: 26+
<!-- Silently install Clock.apk from the /enterprise/usr/persist folder -->
<wap-provisioningdoc>
<characteristic version="4.2" type="AppMgr">
<parm name="Action" value="Install" />
<parm name="APK" value="/enterprise/usr/persist/Clock.apk" />
</characteristic>
</wap-provisioningdoc>
<!-- Silently upgrade Clock.apk from the /enterprise/usr/persist folder -->
<wap-provisioningdoc>
<characteristic type="AppMgr" version="4.2" >
<parm name="Action" value="Upgrade"/>
<parm name="APK" value="/enterprise/usr/persist/Clock.apk"/>
</characteristic>
</wap-provisioningdoc>
<wap-provisioningdoc>
<characteristic version="4.2" type="AppMgr">
<parm name="Action" value="DisableApplication" />
<parm name="Package" value="com.mypackagename" />
</characteristic>
</wap-provisioningdoc>
<wap-provisioningdoc>
<characteristic version="4.2" type="AppMgr">
<parm name="Action" value="Uninstall" />
<parm name="Package" value="com.packagename" />
</characteristic>
</wap-provisioningdoc>
<wap-provisioningdoc>
<characteristic version="4.2" type="AppMgr">
<parm name="Action" value="Install" />
<parm name="APK" value="/sdcard/myapp.apk" />
</characteristic>
<characteristic version="4.3" type="Intent">
<parm name="Action" value="StartActivity" />
<parm name="ActionName" value="android.intent.action.MAIN" />
<parm name="Package" value="com.mypackage" />
<parm name="Class" value="com.mypackage.myactivity" />
</characteristic>
</wap-provisioningdoc>
<wap-provisioningdoc>
<characteristic type="AppMgr" version="7.0" >
<parm name="Action" value="BatteryOptimization"/>
<parm name="AddPackageNames" value="com.example.android.deviceowner, com.symbol.software.filexpa"/>
</characteristic>
</wap-provisioningdoc>
// Response from AppMgr CSP on success:
<wap-provisioningdoc>
<characteristic type="AppMgr" version="7.0" >
<parm name="Action" value="BatteryOptimization"/>
<parm name="AddPackageNames" value="com.example.android.deviceowner, com.symbol.software.filexpa"/>
</characteristic>
</wap-provisioningdoc>
<wap-provisioningdoc>
<characteristic type="AppMgr" version="7.0" >
<parm name="Action" value="BatteryOptimization"/>
<parm name="RemovePackageNames" value="com.example.android.deviceowner, com.symbol.software.filexpa"/>
</characteristic>
</wap-provisioningdoc>
// Response from AppMgr CSP on success:
<wap-provisioningdoc>
<characteristic type="AppMgr" version="7.0" >
<parm name="Action" value="BatteryOptimization"/>
<parm name="RemovePackageNames" value="com.example.android.deviceowner, com.symbol.software.filexpa"/>
</characteristic>
</wap-provisioningdoc>
<wap-provisioningdoc>
<characteristic type="AppMgr" version="8.0" >
<parm name="Action" value="ClearApplicationCache"/>
<parm name="Package" value="com.symbol.tool.stagenow"/>
</characteristic>
</wap-provisioningdoc>