SET_DEFAULT_PROFILE
用于将指定的配置文件设置为默认配置文件。指定的配置文件不能已与另一应用程序关联。一个配置文件可以与许多应用程序关联,但一个应用程序不能与多个配置文件关联。
关于默认配置文件
Profile0 是一个通用的配置文件,会针对来到前台且尚未与 DataWedge 关联的任何应用程序自动生效。
可以编辑 Profile0 的所有参数,但是不能编辑其关联。即 DataWedge 允许操作 Profile0 的输入、处理和输出设置,但不允许分配任何一个前台应用程序。这允许 DataWedge 直接输出到来到前台的任何未关联应用程序。
可以禁用 Profile0,以允许 DataWedge 仅将输出数据发送到与在用户定义的配置文件中关联的那些应用程序。例如,创建与特定应用程序相关联的配置文件,禁用 Profile0,然后进行扫描。DataWedge 仅将数据发送到在用户创建的配置文件中指定的应用程序。这将在 DataWedge 上添加一个额外的安全层,允许仅将数据发送到指定的应用程序。
使用场景
如果启动器应用程序具有用户可以启动的应用程序列表且这些应用程序均未与 DataWedge 配置文件关联,则可使用 setDefaultProfile
方法将配置文件与用户选择的任何应用程序相关联(否则使用 Profile0)。启动用户选择的应用程序时,DataWedge 自动配置文件切换将切换到新指定的配置文件。
如果启动的应用程序已经有关联的 DataWedge 配置文件,则忽略 setDefaultProfile
方法调用,并加载其先前指定的配置文件。当控制返回到启动器应用程序时,可使用 resetDefaultProfile
来重置默认配置文件。
函数原型
Intent i = new Intent(); i.setAction("com.symbol.datawedge.api.ACTION"); i.putExtra("com.symbol.datawedge.api.SET_DEFAULT_PROFILE", "<profile name>");
参数
ACTION [字符串]:"com.symbol.datawedge.api.ACTION"
EXTRA_DATA [字符串]:"com.symbol.datawedge.api.SET_DEFAULT_PROFILE"
<配置文件名称>:将配置文件名称(区分大小写的字符串)设置为默认配置文件。
结果代码
如果应用程序包括 Intent 额外项 RECEIVE_RESULT
和 COMMAND_IDENTIFIER
以使应用程序能够使用 DataWedge 结果 Intent 机制获取结果,则 DataWedge 返回以下错误代码。请参阅以下示例。
- PROFILE_ALREADY_SET - FAILURE
- PROFILE_NOT_FOUND - FAILURE
- PROFILE_HAS_APP_ASSOCIATION - FAILURE
- PROFILE_NAME_EMPTY - FAILURE
有关更多信息,另请参阅结果代码指南。
返回值
将错误和调试消息记录到可通过 logcat 命令查看和过滤的 Android 日志记录系统。从 ADB Shell 使用 logcat 查看日志消息:
$ adb logcat -s DWAPI
记录无效操作、参数和故障(例如,配置文件未找到或已与某个应用程序相关联)的错误消息。
示例代码
// define action and data strings String setDefaultProfile = "com.symbol.datawedge.api.ACTION"; String extraData = "com.symbol.datawedge.api.SET_DEFAULT_PROFILE"; public void onResume() { // create the intent Intent i = new Intent(); // set the action to perform i.setAction(setDefaultProfile); // add additional info (a name) i.putExtra(extraData, "myProfile"); // send the intent to DataWedge 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(); };
注释
如果指定的配置文件不存在或指定的配置文件已与某个应用程序相关联,则 API 命令将不起任何作用。活动暂停时,DataWedge 将自动切换配置文件,因此建议从活动的 onResume 方法调用此 API 函数。
Zebra 建议创建此配置文件以满足所有应用程序/活动,否则将默认使用 Profile0。这将确保这些应用程序/活动不会无意间切换扫描器设备配置。例如,假如 Profile0 为默认配置文件,并且将其配置为使用摄像头作为条码扫描器。如果只使用浏览器应用程序和摄像头扫描条码,则 DataWedge 始终使用摄像头进行扫描,并按预期将获取的数据输入到浏览器中。但是,如果后来启动了一个应用程序,其切换到使用 Blockbuster 作为条码扫描器的配置文件,则会意外地将浏览器应用程序(设置为使用默认配置文件)重新配置为在下次使用它时使用 Blockbuster 进行扫描。为了确保在这种情况下浏览器继续使用摄像头作为条码扫描器,只需创建一个将摄像头指定为条码扫描器的配置文件,并将该配置文件与浏览器相关联。
另请参阅:
Zebra 支持中心 | 集成商指南、产品手册、软件下载和支持
LaunchPad | Zebra 开发人员社区
Intent | Android 开发人员
Intent 和 Intent 过滤器 | Android 开发人员
Android Intent | 教程