设置已禁用的应用程序列表

DataWedge 7.4

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_RESULTCOMMAND_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_RESULTCOMMAND_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 | 教程