SET_DISABLED_APP_LIST
在 DataWedge 6.5 中引入。
用于在“已禁用的应用程序列表”(即阻止使用 DataWedge 的应用程序和活动列表)上添加、删除或更新项目。包含嵌套捆绑包。此 API 还可由某个应用程序用于阻止该应用程序本身使用 DataWedge。
如果某个应用程序在已禁用的应用程序列表中列出,而该应用程序又是正在导入的配置文件中的关联应用程序 - 导入不会生效,该应用程序仍保留在已禁用的应用程序列表中。
函数原型
Intent i = new Intent(); i.setAction("com.symbol.datawedge.api.ACTION"); i.putExtra("com.symbol.datawedge.api.SET_DISABLED_APP_LIST", "<bundle>");
参数
ACTION [字符串]:"com.symbol.datawedge.api.ACTION"
EXTRA_DATA [捆绑包]:"com.symbol.datawedge.api.SET_DISABLED_APP_LIST"
MAIN BUNDLE
主捆绑包 DISABLED_APP_LIST
包含以下属性:
CONFIG_MODE [字符串]:
- UPDATE:将指定的包和/或活动添加到现有列表
- REMOVE:从现有列表中删除指定的包和/或活动
- OVERWRITE:将现有列表替换为指定的列表。如果未指定应用程序,则擦除现有列表。
APP_LIST [捆绑包数组]:
- APP_LIST [0]:
- PACKAGE_NAME [字符串]:应用程序的包名称。必填字段;不支持通配符(“*”)。
- ACTIVITY_LIST [字符串的数组]:留空或使用通配符(“*”)以指示整个包。
主捆绑包
APP_LIST [0]:
- PACKAGE_NAME ["com.symbol.emdk.notificationsample1"]
- ACTIVITY_LIST [“com.symbol.emdk.barcodesample1.MainActivity” ,”com.symbol.emdk.barcodesample1.ResultsActivity”]
对于上述情形...
在 UPDATE 模式下,如果在“已禁用的应用程序列表”中已存在指定的包名称,则 DataWedge 会将指定的活动添加到之前为该包指定的那些活动。如果没有,则 DataWedge 会添加包和指定的活动。
在 REMOVE 模式下,如果在“已禁用的应用程序列表”中已存在指定的包名称,则 DataWedge 会将其删除。否则,则 DataWedge 会返回
INVALID_PARAMETER
错误。
APP_LIST [1]:
- PACKAGE_NAME [字符串]:"com.symbol.emdk.notificationsample1"
- ACTIVITY_LIST [“*”]
对于上述情形...
- 在 UPDATE 模式下,对指定的包的所有活动禁用 DataWedge。
- 在 REMOVE 模式下,DataWedge 从已禁用的列表中删除指定的包,并将忽略不视为包名称或活动名称子字符串的通配符字符。要删除一个或多个单独的活动,请指定要删除的整个包名称和活动。
APP_LIST [2]:
- PACKAGE_NAME:"com.symbol.emdk.notificationsample1"
对于上述情形...
- 在 UPDATE 模式下,对指定的包的所有活动禁用 DataWedge。
- 在 REMOVE 模式下,DataWedge 从禁用列表中删除指定的包(使应用程序能够使用 DataWedge)。
重要说明:仅当使用 UPDATE 和 REMOVE 配置模式时,才需要 APP_LIST 捆绑包额外项。如果在使用 OVERWRITE 模式时 APP_LIST 为空,则会删除现有“已禁用的应用程序列表”。
结果代码
如果应用程序包括 Intent 额外项 RECEIVE_RESULT
和 COMMAND_IDENTIFIER
以使应用程序能够使用 DataWedge 结果 Intent 机制获取结果,则 DataWedge 返回以下错误代码。请参阅以下示例。
- PARAMETER_INVALID - CONFIG_MODE 未定义或具有无效的字符串值。如果将模式设置为 UPDATE 或 REMOVE 且未提供 APP_LIST,也会返回这些错误代码。
- INVALID PACKAGE OR ACTIVITY - 包或活动名称包含无效字符
- APP_ALREADY_IN_DISABLED_LIST - 包或活动已存在于“已禁用的应用程序列表”中
- APP_ALREADY_IN_DISABLED_LIST - 活动已与应用程序相关联
- APP_NOT_IN_DISABLED_LIST - 包或活动未存在于“已禁用的应用程序列表”中
有关更多信息,另请参阅结果代码指南。
返回值
将错误和调试消息记录到可通过 logcat 命令查看和过滤的 Android 日志记录系统。从 ADB Shell 使用 logcat 查看日志消息:
$ adb logcat -s DWAPI
记录无效操作、参数和故障(例如,配置文件未找到或已与某个应用程序相关联)的错误消息。
示例
下面的代码发送 Intent 以将应用程序添加到 DataWedge 中的“已禁用的应用程序列表”。要验证切换的结果(或如果预期会出现错误),请包括 Intent 额外项 RECEIVE_RESULT
和 COMMAND_IDENTIFIER
以获取结果。
Bundle bMain = new Bundle(); bMain.putString("CONFIG_MODE ","UPDATE"); Bundle bundleApp1 = new Bundle(); bundleApp1.putString("PACKAGE_NAME","com.android.calculator2"); bundleApp1.putStringArray("ACTIVITY_LIST", new String[]{ "com.android.calculator2.Calculator", "com.android.calculator2.Licenses"}); Bundle bundleApp2 = new Bundle(); bundleApp2.putString("PACKAGE_NAME","com.android.phone"); bundleApp2.putStringArray("ACTIVITY_LIST", new String[]{ "com.android.phone.EmargencyDialer", "com.android.phone.ADNList", "com.android.phone.Settings"}); Bundle bundleApp3 = new Bundle(); bundleApp3.putString("PACKAGE_NAME","com.android.email"); bundleApp3.putStringArray("ACTIVITY_LIST", new String[]{"*"}); Bundle bundleApp4 = new Bundle(); bundleApp4.putString("PACKAGE_NAME","com.symbol.myzebraapp"); bMain.putParcelableArray("APP_LIST", new Bundle[]{ bundleApp1 ,bundleApp2 ,bundleApp3 ,bundleApp4 }); Intent i = new Intent(); i.setAction("com.symbol.datawedge.api.ACTION"); i.putExtra("com.symbol.datawedge.api.SET_DISABLED_APP_LIST", bMain); this.sendBroadcast(i);
生成和接收结果代码
命令和配置 Intent 参数决定是否发送结果代码(默认情况下处于禁用状态)。使用 SEND_RESULT
时,COMMAND_IDENTIFIER
用于将结果代码与起源 Intent 进行匹配。这些参数的示例用法如下所示。
注意:修改此通用代码以与要使用的 API 匹配。
// send the intent Intent i = new Intent(); i.setAction(ACTION); i.putExtra("com.symbol.datawedge.api.CREATE_PROFILE", "Profile1"); // request and identify the result code i.putExtra("SEND_RESULT","true"); i.putExtra("COMMAND_IDENTIFIER","123456789"); this.sendBroadcast(i); // register to receive the result public void onReceive(Context context, Intent intent){ String command = intent.getStringExtra("COMMAND"); String commandidentifier = intent.getStringExtra("COMMAND_IDENTIFIER"); String result = intent.getStringExtra("RESULT"); Bundle bundle = new Bundle(); String resultInfo = ""; if(intent.hasExtra("RESULT_INFO")){ bundle = intent.getBundleExtra("RESULT_INFO"); Set<String> keys = bundle.keySet(); for (String key: keys) { resultInfo += key + ": "+bundle.getString(key) + "\n"; } } String text = "Command: "+command+"\n" + "Result: " +result+"\n" + "Result Info: " +resultInfo + "\n" + "CID:"+commandidentifier; Toast.makeText(context, text, Toast.LENGTH_LONG).show(); };
备注
(无)
另请参阅:
Zebra 支持中心 | 集成商指南、产品手册、软件下载和支持
LaunchPad | Zebra 开发人员社区
Intent | Android 开发人员
Intent 和 Intent 过滤器 | Android 开发人员
Android Intent | 教程