“SmartDocs”栏可以自定义此页面,仅显示在特定 Zebra 设备上存在的功能。
在 Android“设置”面板或通过 ADB、EMDK 或 MX CSP 查询设备,可以找到设备的 OSX、MX 和 Android 版本信息。更多信息。
Application Manager (AppMgr) 管理设备上的用户应用程序。可使用它以编程方式安装、卸载、升级应用程序以及打开(或关闭)启动应用程序的能力,所有这些都无需任何用户交互。AppMgr 还可以将应用程序指定为默认启动器(在按下 HOME 键时调用),可执行与应用程序管理相关的其他任务。
在消费者 Android 设备上,应用程序管理通常需要设备用户与设备上呈现的管理 UI 交互。通过 MDM 管理设备的情形通常需要 MDM 严格控制哪些用户应用程序无需用户同意或审批即可安装。这使一个 MDM 可以完全控制设备上安装的用户应用程序。
在考虑 AppMgr 的功能时,一定要了解该应用程序可分为两类:系统应用程序和用户应用程序。系统应用程序均已构建到设备中,因此始终已安装。用户应用程序没有内置到设备中,因此必须先在设备上安装,然后才能使用它们。AppMgr 的有些功能仅适用于系统应用程序,有些功能仅适用于用户应用程序,有些对两种应用程序都适用。每个功能将确定它适用的应用程序的种类。
用于指定要对应用程序或应用程序相关的设置执行的操作。操作可以仅应用于系统应用程序,仅应用于用户应用程序或同时应用于两者(说明如下)。注意:使用“ClearRecentApps”操作清除最近应用程序列表后,“受保护”的应用程序将保留在“最近应用程序”列表中。有关更多信息,请参阅“受保护列表操作”参数。
参数名称:操作
选项 | 名称 | 说明 | 需要 |
---|---|---|---|
0 | 无操作 | 此值(或 XML 中缺少此参数)将导致不会更改设备上的应用程序。 |
MX:4.1+ |
1 | 安装 | 导致在设备上安装在该设备指定路径中的. apk 文件中包含的用户应用程序。如果因为任何原因而无法安装请求的应用程序,将会在结果 XML 文档中返回错误。注意 - 如果试图安装包名称与设备上已安装的应用程序同名的应用程序,则会在结果 XML 文档中返回错误。要将设备上已安装的应用程序替换为同名软件包的不同版本,可改用“升级”值。 |
OSX:1.0+ MX:4.2+ |
2 | 卸载 | 导致从设备中删除具有指定包名称的用户应用程序。如果因为任何原因而无法删除请求的应用程序,将会在结果 XML 文档中返回错误。注意 - 如果在设备上没有安装具有指定包名称的用户应用程序,则会在结果 XML 文档中返回错误。注意 - 在删除应用程序后,该应用程序拥有的沙盒区域中存储的数据也将被删除。如果重新安装需要此类数据的应用程序,则必须重新创建数据。 |
OSX:1.0+ MX:4.1+ |
3 | 升级 | 导致在该设备指定路径中的. apk 文件中包含的用户应用程序升级设备上已有的包名称相同的应用程序。如果因为任何原因而无法升级请求的应用程序,将会在结果 XML 文档中返回错误。注意 - 如果试图升级包名称与设备上现有的任何包名称都不匹配的应用程序,则会在结果 XML 文档中返回错误。要安装在设备上尚未安装的应用程序,则改用“安装”值。注意 - 在升级应用程序时,保留该应用程序的数据。这将允许新版本的应用程序访问(也可能是转换)旧版本创建的数据。注意 - 在运行 Android Jelly Bean 版本的设备中,升级可以将应用程序的任何版本替换为相同应用程序的任何其他版本。但是,在运行 KitKat 或更高版本 Android 的设备中,升级只能将应用程序替换为相同应用程序的更高版本(数字更大)。做出此更改可减少旧版本应用程序无法理解新版本所生成数据的问题。 |
OSX:1.0+ MX:4.1+ |
4 | SetDefaultLauncher | 将具有指定包名称的系统或用户应用程序设置为新的默认启动器。指定的应用程序必须已经安装在设备上,一般应按照相关的 Android 规范设计为启动器。如果在设备上没有安装具有指定包名称的用户应用程序,则会在结果 XML 文档中返回错误。 |
OSX:1.3+ MX:4.1+ |
5 | EnableApplication | 允许启动具有指定包名称的系统应用程序。如果该包名称在设备上不存在,将会在结果 XML 文档中返回错误。 |
MX:4.2+ Android API:1+ |
6 | DisableApplication | 阻止启动具有指定包名称的系统应用程序。如果该包名称在设备上不存在,将会在结果 XML 文档中返回错误。 |
MX:4.2+ Android API:1+ |
7 | ClearRecentApps | 清除 Android 最近应用程序列表,否则该列表将允许用户查看和启动最近使用的应用程序(不包括受保护的应用程序。请参阅以上“注意”。) |
MX:4.2+ Android API:16+ |
8 | LaunchApplication | 允许系统或用户应用程序通过其可见名称启动,而不是通过它的包名称启动。这指的是在启动器、应用程序抽屉、Application Manager 中或在 strings.xml 文件的 app _ name 字段中显示的应用程序名称(例如“计算器”)。要使用此值,应用程序及其图标或小部件必须在启动器屏幕中可见,可使用该图标或小部件启动其主要活动。如果该应用程序不存在,没有图标或小工具,无法使用其主要活动启动,或只包含服务和接收器,将会在结果 XML 文档中返回错误。不区分大小写。 |
MX:5.1+ Android API:1+ |
9 | BatteryOptimization | 允许为电池优化指定一个或多个应用程序。 |
MX:7.0+ Android API:23+ |
用于指定要从中执行应用程序安装或升级的设备文件系统中的 Android .apk 文件的路径和文件名。
重要说明:
.apk 文件可用于安装或更新用户应用程序或更新系统应用程序。从. apk 文件安装的任何应用程序按定义都属于用户应用程序,因为它未内置到设备中。对于升级而言,.apk 文件上签署的开发人员证书必须与它打算升级的应用程序相同。如果不同,则会在结果 XML 文件中返回错误。
系统应用程序只能使用生成了该内置系统应用程序的同一开发人员所生成的 .apk 文件来升级。一个系统应用程序被更新后,将被视为用户应用程序,但它与所替换的版本具有相同的权限。这使新版本能够与原始系统应用程序执行相同的操作。如果清除了数据并且从此类更新程序中删除了更新,它将恢复为原始内置版本,再次被视为系统应用程序。
输入值规则:
/storage/sdcard1/Herald.apk
在以下条件下显示:操作为“安装”或“升级”
参数名称:APK
需要:
- OSX:1.0+
- MX:4.2+
用于为选定操作指定一个或多个应用程序的包名称。使用逗号分隔多个包名称。包名称必须准确指定,可从应用程序开发人员那里获得,通过从 .apk 文件提取包名称或者在设备中找到它。
重要说明:如果在列表中未正确指定包名称,该名称后面的所有名称都将被忽略。
输入值规则:
com.mycompany.mypackage
。在以下条件下显示:操作为“卸载”或“设为默认启动器”或“启用应用程序”或“禁用应用程序”
参数名称:软件包
需要:
- OSX:1.0、1.3+
- MX:4.2+
- Android API:1+
用于为选定操作指定应用程序的名称。
注意:要为某个应用程序执行以上所列的操作,则必须指定该应用程序的名称而不是包名称。名称定义为在 Android 启动器、应用程序抽屉或 Application Manager 中的应用程序图标所附带的名称。此名称还在
strings.xml
文件的app_name
中指定。
输入值规则:
strings.xml
文件的 app_name
字段中显示的应用程序名称(例如“计算器”)在以下条件下显示:操作是“启动应用程序”
参数名称:ApplicationName
需要:
- MX:5.1+
用于在受保护列表中添加或删除应用程序,允许应用程序在启用多用户模式时免受某些施加的约束条件的限制。
注意:使用“ClearRecentApps”操作清除最近应用程序列表后,“受保护”的应用程序将保留在“最近应用程序”列表中。
包名称在受保护列表上的应用程序可以:
注意:在所有支持 Zebra MX 功能的 Zebra Android 设备上均支持多用户模式,但是 AccessMgr 当前无法启用它。启用多用户模式目前使用可能无法扩展到大型部署的无支持工具或机制来完成。由于这个原因,使用 AppMgr 管理受保护列表的功能仅提供了有限的好处。
在以下条件下显示:操作不是“电池优化”
参数名称:ProtectedListAction
选项 | 名称 | 说明 | 需要 |
---|---|---|---|
0 | 无操作 | 此值(或 XML 中缺少此参数)将导致不会更改受保护列表。 |
OSX:1.2+ MX:4.2+ |
1 | AddAppToProtectedList | 添加指定的应用程序包名称到受保护列表。 |
OSX:1.2+ MX:4.2+ |
2 | RemoveAppFromProtectedList | 从受保护列表中删除指定的应用程序包名称。 |
OSX:1.2+ MX:4.2+ |
3 | ClearProtectedList | 从受保护列表中删除所有应用程序包名称。 |
OSX:1.2+ MX:4.2+ |
用于指定要从受保护列表中添加或删除的应用程序的包名称。使用逗号分隔多个名称。名称必须准确指定,可从应用程序开发人员那里获得,通过从 .apk 文件提取包名称或者在设备中找到它。
重要说明:如果在列表中未正确指定包名称,该名称后面的所有名称都将被忽略。
输入值规则:
com.mycompany.mypackage
。在以下条件下显示:受保护列表操作是“将应用程序添加到受保护列表”或“从受保护列表中删除应用程序”
参数名称:ProtectedListPackage
需要:
- OSX:1.2+
- MX:4.2+
用于允许阻止访问所有应用程序的应用程序信息,而不阻止访问“系统设置”菜单的其他部分。通过禁用应用程序信息,可以阻止用户使用应用程序信息干扰已配置的一组已安装应用程序。
由于 AppMgr 可以控制安装哪些应用程序,因此可能担心设备用户可以使用设备“系统设置”菜单的“应用程序信息”部分影响已安装的应用程序。例如,设备用户可以终止(强制停止)应用程序,删除应用程序数据(清除数据),甚至是完全卸载该应用程序。如果正在使用 MDM 控制设备上已安装的应用程序集,可能不希望设备用户进行此类活动。
让问题变得更严重的是,除了系统设置菜单之外,还可以从设备 UI 中的多个地方访问“应用程序信息”。例如,可以从 Android 最近应用程序列表或在 Android 通知区域从与应用程序相关的通知中访问“应用程序信息”。
要阻止设备用户使用“应用程序信息”更改已配置的一组已安装应用程序,可能需要完全阻止设备用户访问“应用程序信息”。当然,AppMgr 可以用来禁止启动“系统设置菜单”应用程序,这会阻止访问“应用程序信息”。但也会阻止访问“系统设置菜单”的所有其他方面。一个更有针对性的方法是仅阻止“应用程序信息”。
注意:此功能仅在运行 Android Kit Kat 的设备上受支持。
在以下条件下显示:操作不是“电池优化”
参数名称:AccessAppInfoAction
选项 | 名称 | 说明 | 需要 |
---|---|---|---|
0 | 无操作 | 此值(或 XML 中缺少此参数)将导致不进行任何更改。 |
OSX:4.2+ MX:4.2+ |
1 | EnableAccessAllInfo | 在启用对“系统设置菜单”应用程序的访问后,允许访问设备上所有应用程序的“应用程序信息”。 |
OSX:4.2+ MX:4.2+ |
2 | DisableAccessAllInfo | 禁止访问设备上所有应用程序的“应用程序信息”。 |
OSX:4.2+ MX:4.2+ |
用于指定要应用电池优化的一个或多个应用程序的包名称。使用逗号分隔多个包名称。包名称必须准确指定,可从应用程序开发人员那里获得,通过从 .apk 文件提取包名称或者在设备中找到它。
重要说明:如果在列表中错误指定了一个名称,该名称后面的所有名称都将被忽略。
输入值规则:
com.mycompany.mypackage
。在以下条件下显示:操作是“电池优化”
参数名称:AddPackageNames
需要:
- MX:7.0+
用于指定要从中取消电池优化的一个或多个应用程序的包名称。
输入值规则:
在以下条件下显示:操作是“电池优化”
参数名称:RemovePackageNames
需要:
- MX:7.0+
<!-- 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>