Zebra Datawedge Intent配置Bundle的正确顺序及解码参数设置方法
正确配置方式
所有解码器相关参数不需要新建额外Bundle,直接添加到你现有代码中的bParams(也就是PARAM_LIST对应的Bundle)即可。PARAM_LIST本身就是用来承载BARCODE插件下所有扫描配置参数的容器,不管是全局扫描开关还是具体码制的规则配置都直接放在这个层级。
完整修改后的代码示例
public static Intent Init() { Bundle bMain = new Bundle(); bMain.PutString("PROFILE_NAME", "SorterApp"); bMain.PutString("PROFILE_ENABLED", "true"); bMain.PutString("CONFIG_MODE", "UPDATE"); Bundle bConfig = new Bundle(); bConfig.PutString("PLUGIN_NAME", "BARCODE"); bConfig.PutString("RESET_CONFIG", "false"); Bundle bParams = new Bundle(); bParams.PutString("scanner_input_enabled", "true"); // 配置Codabar码 bParams.PutString("decoder_codabar", "true"); // 启用Codabar解码 bParams.PutString("decoder_codabar_length1", "4"); // 最小长度 bParams.PutString("decoder_codabar_length2", "20"); // 最大长度 // 如需启用I2of5码也按同样格式添加 bParams.PutString("decoder_i2of5", "true"); // 对应I2of5的长度配置也是同样逻辑:bParams.PutString("decoder_i2of5_length1", "x") bConfig.PutBundle("PARAM_LIST", bParams); bMain.PutBundle("PLUGIN_CONFIG", bConfig); Intent dataWedgeIntent = new Intent(); dataWedgeIntent.SetAction("com.symbol.datawedge.api.ACTION"); dataWedgeIntent.PutExtra("com.symbol.datawedge.api.SET_CONFIG", bMain); return dataWedgeIntent; }
配置层级结构说明
你传递的Bundle层级是固定的,不需要额外新增层级:
- 顶层
bMain:存储配置文件名称、启用状态、更新模式、插件配置集合- 子Bundle
bConfig(对应keyPLUGIN_CONFIG):指定当前配置作用于BARCODE插件、是否重置原有该插件下的配置- 子Bundle
bParams(对应keyPARAM_LIST):所有BARCODE插件的具体参数都放在这,包括全局开关、各码制启用状态、各码制长度/校验规则等
- 子Bundle
- 子Bundle
注意事项
所有参数的值都需要用字符串类型传递,哪怕是长度这种数字值也要转为字符串传入,否则配置不会生效。其他码制的配置也都遵循同样的规则,直接在bParams中添加对应参数即可。
内容的提问来源于stack exchange,提问作者Serve Laurijssen
相关产品推荐
相关产品推荐

