Get Config

DataWedge 14.1

GET_CONFIG

Gets the PARAM_LIST settings in the specified Profile, returned as a set of value pairs or a Plug-in config bundle.

Version History

  • Introduced in DataWedge 6.5
  • DataWedge 6.8 - Added support for ADF settings
  • DataWedge 6.9/7.0 - Added support for Voice Input and Global Scanner Configuration
  • DataWedge 7.1 - Added support for configurations: full profile, Data Capture Plus (DCP), Magnetic Stripe Reader (MSR), Internet Protocol (IP), Simulscan
  • DataWedge 7.3.22 - Added support for new RFID Input feature.
  • DataWedge 7.4.44 - New Enterprise Keyboard Configuration feature

Function Prototype

Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.GET_CONFIG", "<profile name>");

Parameters

ACTION [string]: "com.symbol.datawedge.api.ACTION"

EXTRA_DATA [string]: "com.symbol.datawedge.api.GET_CONFIG"

EXTRA VALUE [bundle]: "<PROFILE_NAME>", "<PLUGIN_CONFIG>"

  • PLUGIN_CONFIG [bundle] -
  • PLUGIN_NAME [string] - single plug-in name (i.e. "barcode") or ArrayList of plugin names:
    • PROCESS_PLUGIN_NAME [list of bundles] - For example:
    • PLUGIN_NAME - "ADF", "BDF"
    • OUTPUT_PLUGIN_NAME - "KEYSTROKE"
    • ...
    • PLUGIN_NAME - "BDF"
    • OUTPUT_PLUGIN_NAME - "INTENT"

Notes:

  • The PROCESS_PLUGIN_NAME parameter must be used to query process Plug-ins (ADF and BDF); the default GET_CONFIG intent cannot retrieve information about process Plug-ins.
  • Non-existent values will be returned as empty extras.

SCANNER_IDENTIFIER: Present in each scanner info bundle for each scanner supported in the device. Index and identifier parameters are both supported in DataWedge 6.6 and higher; the scanner identifier value takes precedence if an index also is referenced in the code.

  • scanner_selection_by_identifier [string]- takes a value from the list of Scanner Identifiers below:
    • AUTO - Automatic scanner selection
    • INTERNAL_IMAGER - Built-in imager scanner
    • INTERNAL_LASER - Built-in laser scanner
    • INTERNAL_CAMERA - Built-in camera scanner
    • SERIAL_SSI - Pluggable Z-back scanner for ET50/ET55
    • BLUETOOTH_SSI - RS507 Bluetooth scanner
    • BLUETOOTH_RS6000 - RS6000 Bluetooth scanner
    • BLUETOOTH_DS3678 - DS3678 Bluetooth scanner
    • PLUGABLE_SSI - Serial SSI scanner RS429 (for use with WT6000)
    • PLUGABLE_SSI_RS5000 - Serial SSI scanner RS5000 (for use with WT6000)
    • USB_SSI_DS3608 - DS3608 pluggable USB scanner

Return Values

Returns a nested bundle with the Profile name, status and a Profile config bundle containing the PARAM_LIST bundle.

EXTRA NAME: "com.symbol.datawedge.api.GET_CONFIG_RESULT"

BUNDLE: <mainbundle> (see parameters below)

Main Bundle

The main Get_Result_Config bundle contains the following properties:

PROFILE_NAME [string]: Name of the Profile being queried

PROFILE_ENABLED [string]: True/False

PLUGIN_CONFIG [bundle]: Nested bundle with the following properties:

  • PLUGIN_NAME [string]: Name of the Plug-in being reported (i.e. Barcode)
  • PARAM_LIST [bundle]: Nested List of name-value pairs. For example:
    • current-device-index, 0
    • Aztec, True
    • Canadian_Postal, False
    • Code11, Null (resets to default)
    • Picklist, HARDWARE
    • AimType, PRESS_AND_RELEASE
    • ... (etc.)

Example Code

Send GET_CONFIG intent

Bundle bMain = new Bundle();
bMain.putString("PROFILE_NAME", "DWDemo");
Bundle bConfig = new Bundle();
ArrayList<Bundle> pluginName = new ArrayList<>();

Bundle pluginInternal = new Bundle();
pluginInternal.putString("PLUGIN_NAME", "ADF");//can put a list "ADF,BDF"
pluginInternal.putString("OUTPUT_PLUGIN_NAME","KEYSTROKE");
pluginName.add(pluginInternal);
bConfig.putParcelableArrayList("PROCESS_PLUGIN_NAME", pluginName);
bMain.putBundle("PLUGIN_CONFIG", bConfig);

Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.GET_CONFIG", bMain);
this.sendBroadcast(i);

Receive the GET_CONFIG result

private BroadcastReceiver myBroadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {

    Bundle extras = intent.getExtras();
    Set<String> keys = extras.keySet();
    for(String key: keys){
        Log.d(TAG,"key:"+key);
    }

    if (extras.containsKey("com.symbol.datawedge.api.RESULT_GET_CONFIG")) {
        Bundle bundle = intent.getBundleExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG");
        if(bundle != null && !bundle.isEmpty()){
            String profileName = bundle.getString("PROFILE_NAME");
            String profileEnabled = bundle.getString("PROFILE_ENABLED");
            ArrayList<Bundle> configBundleList = bundle.getParcelableArrayList("PLUGIN_CONFIG");
            if(configBundleList!=null) {
                for (Bundle configBundle : configBundleList) {
                    String pluginName = configBundle.getString("PLUGIN_NAME");
                    Log.d(TAG, "\n Plugin Name :" + pluginName);

if (pluginName!=null && pluginName.equalsIgnoreCase("ADF")) {
            String pluginEnabled = configBundle.getString("adf_enabled");
            Log.d(TAG, " Plugin Enabled :" + pluginEnabled);
            if(configBundle.containsKey("PARAM_LIST")){
                Object object = configBundle.get("PARAM_LIST");
                if(object!=null && object instanceof ArrayList){
                    ArrayList<Bundle> paramArrayList = (ArrayList)object;
                    for(Bundle rule : paramArrayList){
                        String name = rule.getString("name");
                        String enabled = rule.getString("enabled");
                        String priority = rule.getString("priority");
                        String alldevices = rule.getString("alldevices");
                        String string = rule.getString("string");
                        String stringPos = rule.getString("string_pos");
                        String stringLen = rule.getString("string_len");

                    Log.d(TAG, "Rule ->");
                    Log.d(TAG, " name :" + name);
                    Log.d(TAG, " enabled :" + enabled);
                    Log.d(TAG, " priority :" + priority);
                    Log.d(TAG, " alldevices :" + alldevices);
                    Log.d(TAG, " string :" + string);
                    Log.d(TAG, " stringPos :" + stringPos);
                    Log.d(TAG, " stringLen :" + stringLen);
                    ArrayList<Bundle> actions = rule.getParcelableArrayList("ACTIONS");
                    if(actions!=null){
                        Log.d(TAG,"\n  Actions->");
                        for(Bundle action: actions){
                            String type = action.getString("type");
                            Object param_1 = action.get("action_param_1");
                            Object param_2 = action.get("action_param_2");
                            Object param_3 = action.get("action_param_3");

                            Log.d(TAG,"  type:"+type);
                            if(param_1!=null && param_1 instanceof String){
                                Log.d(TAG,"  param_1:"+param_1);
                            }
                            if(param_2!=null && param_2 instanceof String){
                                Log.d(TAG,"  param_2:"+param_2);
                            }
                            if(param_3!=null && param_3 instanceof String){
                                Log.d(TAG,"  param_3:"+param_3);
                            }

                        }
                    }
                    ArrayList<Bundle> devices = rule.getParcelableArrayList("DEVICES");
                    if(devices!=null){
                        Log.d(TAG,"\n  Devices->");
                        for(Bundle device: devices){
                            String type = device.getString("device_id");
                            Object param_1 = device.get("enabled");
                            Object param_2 = device.get("alldecoders");
                            Object param_3 = device.get("all_label_ids");

                            Log.d(TAG,"  Device ID:"+type);
                            if(param_1!=null && param_1 instanceof String){
                                Log.d(TAG,"      Enabled:"+param_1);
                            }
                            if(param_2!=null && param_2 instanceof String){
                                Log.d(TAG,"  All decoders:"+param_2);
                            }
                            if(param_3!=null && param_3 instanceof String){
                                Log.d(TAG,"  All labelids:"+param_3);
                            }

                        }
                    }
                    ArrayList<Bundle> decoders = rule.getParcelableArrayList("DECODERS");
                    if(decoders!=null){
                        Log.d(TAG,"\n  Decoders->");
                        for(Bundle decoder: decoders){
                            String deviceID = decoder.getString("device_id");
                            String decoderEnabled = decoder.getString("enabled");
                            String decoderID = decoder.getString("decoder");

                                Log.d(TAG,"        Device ID:"+deviceID);
                                Log.d(TAG,"  Decoder Enabled:"+decoderEnabled);
                                Log.d(TAG,"       Decoder ID:"+decoderID);
                        }
                    }

                    ArrayList<Bundle> labelIDs = rule.getParcelableArrayList("LABEL_IDS");
                    if(labelIDs!=null){
                        Log.d(TAG,"\n  LabelIDs->");
                        for(Bundle labelID: labelIDs){
                            String deviceID = labelID.getString("device_id");
                            String lblEnabled = labelID.getString("enabled");
                            String lblID = labelID.getString("label_id");

                                Log.d(TAG,"      Device ID:"+deviceID);
                                Log.d(TAG,"  Label Enabled:"+lblEnabled);
                                Log.d(TAG,"       Label ID:"+lblID);
                        }
                    }
                }
            }
        }
    }
}

Get Plug-ins

// SENDING THE INTENT
    Bundle bMain = new Bundle();
    bMain.putString("PROFILE_NAME", "Profile0 (default)");
    Bundle bConfig = new Bundle();
    ArrayList<String> pluginName = new ArrayList<>();
    pluginName.add("BARCODE");

// pluginName.add("INTENT"); to add more plugins

    bConfig.putStringArrayList("PLUGIN_NAME", pluginName);
    bMain.putBundle("PLUGIN_CONFIG", bConfig);

    Intent i = new Intent();
    i.setAction("com.symbol.datawedge.api.ACTION");
    i.putExtra("com.symbol.datawedge.api.GET_CONFIG", bMain);
    this.sendBroadcast(i);

// RECEIVING THE RESULT
    private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.hasExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG")) {
        Bundle result = intent.getBundleExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG");
        Set<String> keys = result.keySet();
        for (String key : keys) {
            if (!key.equalsIgnoreCase("PLUGIN_CONFIG")) {
                Log.d("DWScannerConfig", "DWGetConfig::level-1: " + key + " : " + result.getString(key));
            } else {
                ArrayList<Bundle> bundleArrayList  = result.getParcelableArrayList("PLUGIN_CONFIG");
                for(Bundle configBundle:bundleArrayList){
                    Set<String> keys2 = configBundle.keySet();
                    for (String key2 : keys2) {
                        if (!key2.equalsIgnoreCase("PARAM_LIST")) {
                        } else {
                            Bundle params = configBundle.getBundle("PARAM_LIST");
                            Set<String> keys3 = params.keySet();
                            for (String key3 : keys3) {
                            //TODO consume the params
                            }
                        }
                    }
                }
            }
        }
    }
}
};

Get app associations

// SENDING THE INTENT
    selectedProfileName = "DWDemo";
    Bundle bConfig = new Bundle();
    bConfig.putString("PROFILE_NAME", selectedProfileName);
    bConfig.putString("APP_LIST", "");//empty

    Intent i = new Intent();
    i.setAction("com.symbol.datawedge.api.ACTION");
    i.putExtra("com.symbol.datawedge.api.GET_CONFIG", bConfig);
    this.sendBroadcast(i);

// RECEIVING THE RESULT
    private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            Log.d(TAG, "Action: " + action);

            if(action.equals("com.symbol.datawedge.api.RESULT_ACTION")){

                Bundle b = intent.getExtras();

                // getConfig result
                if(intent.hasExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG")) {

                    Bundle res = b.getBundle("com.symbol.datawedge.api.RESULT_GET_CONFIG");
                    if(!res.isEmpty()) {
                        String profileName = res.getString("PROFILE_NAME");
                        Log.d(TAG, "GET_CONFIG profileName: " + profileName);
                        ArrayList<Bundle> appList = res.getParcelableArrayList("APP_LIST");
                        if(appList == null){
                            Log.d(TAG,"Profile information is not found for "+profileName);
                        }else if(appList.size() == 0){
                            Log.d(TAG,"Profile "+profileName+" has no associated information");
                        }else {
                            for(Bundle b1 :appList ){
                                Log.d(TAG,b1.getString("PACKAGE_NAME")+":"+b1.getStringArrayList("ACTIVITY_LIST"));
                            }
                        }
                    }
                }
            }
        }
    };

Get scanner status

// SENDING THE INTENT
    Intent i = new Intent();
    i.setAction("com.symbol.datawedge.api.ACTION");
    i.putExtra("com.symbol.datawedge.api.GET_SCANNER_STATUS","STANDARD");
    i.putExtra("SEND_RESULT","LAST_RESULT");
    // i.putExtra("SEND_RESULT", "true");  // For versions prior to DataWedge 7.1
    i.putExtra("com.symbol.datawedge.api.RESULT_CATEGORY","android.intent.category.DEFAULT");
    this.sendBroadcast(i);

// RECEIVING THE RESULT
    private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver(){
        @Override
        public void onReceive(Context context, Intent intent){

            if (intent != null) {
                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: \n" + resultInfo + "\n" +
                        "CID:" + commandidentifier;

                Log.d("TAG", "#DataWedgeTestApp# \nCommand: " + command + "\nResult: " + result + "\nReason:\n" + resultInfo);
                Toast.makeText(context, text, Toast.LENGTH_LONG).show();
            }
        };
    };

Get scanner details

//Bundle extras = intent.getExtras();

if (intent.hasExtra(RESULT_ACTION_EXTRA_GET_CONFIG)) {
    Bundle results = intent.getBundleExtra(RESULT_ACTION_EXTRA_GET_CONFIG);
    if(results!=null){
        if(results.containsKey(BUNDLE_EXTRA_PLUGIN_CONFIG)){
            ArrayList<Bundle> list = (ArrayList<Bundle>)results.get(BUNDLE_EXTRA_PLUGIN_CONFIG);
            Bundle x = new Bundle();

            if(list!=null){
                for(Bundle it : list){
                    if(it.containsKey(BUNDLE_EXTRA_PARAM_LIST)){
                        Bundle b =(Bundle)it.get(BUNDLE_EXTRA_PARAM_LIST);
                        String sEnabled = b.getString("scanner_input_enabled");
                        String sSelection = b.getString("scanner_selection");
                        String sSelectionId = b.getString("scanner_selection_by_identifier");
                        String sType = b.getString("scanner_type");

                        Log.d(TAG,"scanner_selection : "+sSelection);
                        Log.d(TAG,"scanner_selection_by_identifier  : "+sSelectionId);
                    }
                }
            }
        }
    }
}

Get barcode parameters

Retrieve the supported barcode parameters of the device from the specified profile. Returns a list of supported barcode parameters with their current values. If a barcode parameter is not listed, that means it is not supported on the device.

public void getScannerConfig()
{
    Bundle bMain = new Bundle();
    bMain.putString("PROFILE_NAME", "Profile0 (default)");
    Bundle bConfig = new Bundle();
    ArrayList<String> pluginName = new ArrayList<>();
    pluginName.add("BARCODE");

    bConfig.putStringArrayList("PLUGIN_NAME", pluginName);
    bMain.putBundle("PLUGIN_CONFIG", bConfig);
    Intent i = new Intent();
    i.setPackage("com.symbol.datawedge");
    i.setAction("com.symbol.datawedge.api.ACTION");
    i.putExtra("com.symbol.datawedge.api.GET_CONFIG", bMain);
    this.sendBroadcast(i);
}

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        String strFinalResult = "";

        if (action.equals("com.symbol.datawedge.api.RESULT_ACTION")) {
            if (intent.hasExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG")) {

                Bundle resultGetConfig = intent.getBundleExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG");
                Set<String> keys = resultGetConfig.keySet();
                String profileName = resultGetConfig.getString("PROFILE_NAME");
                for (String key : keys) {
                    if (key.equalsIgnoreCase("PLUGIN_CONFIG")) {
                        ArrayList<Bundle> bundleArrayList = resultGetConfig.getParcelableArrayList("PLUGIN_CONFIG");
                        for (Bundle configBundle : bundleArrayList) {
                            if(configBundle.getString("PLUGIN_NAME") != null) {
                                strFinalResult += "\nPlugin " + configBundle.getString("PLUGIN_NAME") + " Settings\n";
                            }
                            for (String configBundleKey : configBundle.keySet()) {
                                if (configBundleKey.equalsIgnoreCase("PARAM_LIST")) {
                                    Bundle paramBundle1 = configBundle.getBundle("PARAM_LIST");
                                    if (paramBundle1 != null) {
                                        for (String paramKey : paramBundle1.keySet()) {
                                            strFinalResult += "\n\t" + paramKey + ": " + paramBundle1.get(paramKey);
                                        }
                                    }
                                }
                            }
                            strFinalResult += "\n";

                        }
                    }
                }
                final String status = "Get config info received\n" + strFinalResult;
                Log.d("TAG", "#IntentApp#\n\n" + status);
            }
        }
    }
};

Sample output from code:

Get config info received

Plugin BARCODE Settings

    decoder_code128_enable_ean128: true
    decoder_code39_full_ascii: false
    decoder_i2of5_check_digit: 0
    decoder_i2of5_security_level: 1
    decoder_code128_check_isbt_table: false
    linear_security_level: 1
    upcean_retry_count: 10
    upcean_bookland_format: 0
    ocr_check_digit_multiplier: 121212121212
    decoder_msi_check_digit: 0
    decoder_grid_matrix_mirror: 0
    decoder_msi_reduced_quiet_zone: false
    decoder_msi_check_digit_scheme: 0
    decoder_d2of5_redundancy: true
    beam_timer: 5000
    code128_enable_marginless_decode: false
    trigger_wakeup_scan: false
    instant_reporting_enable: false
    decoder_code128_redundancy: false
    decoder_dotcode_mirror: 2
    decoder_signature: false
    databar_to_upc_ean: false
    decoder_grid_matrix: false
    decoder_codabar_notis_editing: false
    decoder_australian_postal: false
    decoder_upca_preamble: 1
    scanner_selection: auto
    upcean_ean_zero_extend: false
    ocr_lines: 1
    decoder_code93_length1: 0
    decoder_code93_length2: 55
    decoder_msi_length1: 4
    decoder_msi_length2: 55
    decoder_uspostnet: false
    doc_capture_template: None
    enable_udi_iccbba: true
    decoder_code128_enable_plain: true
    multi_barcode_count: 5
    inverse_ocr: 0
    decoder_code11_verify_check_digit: 1
    ocr_b_variant: 0
    ocr_quiet_zone: 50
    decoder_code128_isbt128_concat_mode: 0
    decoder_ean8: true
    decoder_upca: true
    auto_switch_to_default_on_event: 0
    report_decoded_barcodes: false
    decoder_matrix_2of5_verify_check_digit: true
    inverse_1d_mode: 0
    decoder_signature_bpp: 2
    decoder_codabar_length1: 6
    decoder_codabar_length2: 55
    aim_mode: on
    aim_type: 0
    decoder_i20f5_enable_febraban: false
    decoder_code93_redundancy: false
    decoder_hanxin_inverse: 0
    decoder_signature_width: 400
    decoder_aztec: true
    decoder_d2of5: false
    decoder_ean13: true
    decoder_i2of5: false
    decoder_ocr_a: false
    decoder_ocr_b: false
    decoder_tlc39: false
    decoder_upce0: true
    decoder_upce1: false
    decoder_upca_report_check_digit: true
    auto_charset_failure_option: UTF-8
    picklist: 0
    enable_udi_hibcc: true
    SCANNER_STATUS: CONNECTED
    decoder_trioptic39: false
    decoder_uspostnet_report_check_digit: false
    decoder_upce0_convert_to_upca: false
    decoder_dutch_postal_3S: false
    decoder_mailmark: true
    decoder_gs1_datamatrix: false
    decoder_code39_security_level: 1
    decoder_code11_length1: 4
    decoder_code11_length2: 55
    decoder_i2of5_length1: 6
    decoder_i2of5_length2: 55
    decoder_usplanet: false
    decoder_code11_report_check_digit: false
    volume_slider_type: 3
    decoder_gs1_lim_security_level: 2
    decoder_uk_postal: false
    upcean_security_level: 1
    code39_enable_marginless_decode: false
    barcode_trigger_mode: 1
    decoder_uk_postal_report_check_digit: false
    decoder_codabar_redundancy: true
    1d_marginless_decode_effort_level: 1
    decoder_dutch_postal: false
    decoder_i2of5_redundancy: true
    decoder_matrix_2of5_report_check_digit: true
    low_power_timeout: 250
    aim_timer: 500
    lcd_mode: 0
    code128_ignore_fnc4: false
    decoder_composite_c: false
    decoder_code128_length1: 0
    decoder_code128_length2: 55
    decode_screen_time: 1000
    decoder_maxicode: true
    good_decode_led_timer: 75
    poor_quality_bcdecode_effort_level: 0
    decoder_grid_matrix_inverse: 0
    decoder_gs1_qrcode: false
    upcean_supplemental2: true
    upcean_supplemental5: true
    decode_haptic_feedback: false
    ocr_check_digit_modulus: 1
    upcean_bookland: false
    different_barcode_timeout: 500
    ocr_orientation: 0
    decoder_codabar_clsi_editing: false
    decoder_code39_verify_check_digit: false
    decoder_matrix_2of5_redundancy: false
    decoder_us4state_fics: false
    decode_audio_feedback_uri: content://media/internal/audio/media/186
    decoder_matrix_2of5_length1: 10
    decoder_matrix_2of5_length2: 0
    decoder_gs1_databar: true
    decoder_chinese_2of5: false
    decoder_matrix_2of5: false
    same_barcode_timeout: 500
    decoder_us_currency: false
    illumination_mode: torch
    decoder_code39_convert_to_code32: false
    decoder_codabar: true
    decoder_code128: true
    decoder_finnish_pos

Get barcode highlighting parameters

Retrieve the barcode highlighting parameters from the Barcode Highlighting rules specified from the profile. Returns a list of supported parameters with their current values.

BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String strFinalResult = "";
        if (intent.hasExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG")) {
            Bundle resultGetConfig = intent.getBundleExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG");
            Set<String> keys = resultGetConfig.keySet();
            String profileName = resultGetConfig.getString("PROFILE_NAME");

            for (String key : keys){
                if (key.equalsIgnoreCase("PLUGIN_CONFIG")){
                    ArrayList<Bundle> bundleArrayList = resultGetConfig.getParcelableArrayList("PLUGIN_CONFIG");
                    for (Bundle configBundle : bundleArrayList){
                        String pluginName = configBundle.getString("PLUGIN_NAME");
                        if(pluginName != null && pluginName.equalsIgnoreCase("BARCODE")){
                            Bundle b  = configBundle.getBundle("PARAM_LIST");
                            strFinalResult += "\n Profile name: "+ profileName;
                            for (String bkey:b.keySet()) {
                                if(bkey.equalsIgnoreCase("barcode_highlighting_rules")){
                                    strFinalResult +="\n" + bkey + ": " + processRulesBundle(b.getParcelableArrayList(bkey));
                                }else {
                                    strFinalResult += "\n" + bkey + ": " + b.get(bkey) + "";
                                }
                            }
                        }
                    }

                    Log.d("TAG", "#IntentApp#\n\nGet config info received\n" + strFinalResult);
                }
            }
        }
    }
};


private String processRulesBundle(ArrayList<Bundle> rulesBundleList){
    String result = "";
    if(rulesBundleList!= null && !rulesBundleList.isEmpty()) {
        for (Bundle rule : rulesBundleList) {
            String paramID = rule.getString("rule_param_id");
            ArrayList<Bundle> ruleParamList = rule.getParcelableArrayList("rule_list");
            if (ruleParamList != null && !ruleParamList.isEmpty()) {
                result += "\n\t" + "rule_param_id" + ": " + paramID + "";
                result += "\n\t" + "rules_list" + ": " + processRuleParamBundle(ruleParamList);
            }
        }
    }
    return result;
}

private String processRuleParamBundle(ArrayList<Bundle> ruleParamList){
    String result = "";
    for(Bundle ruleParam: ruleParamList){
        String ruleName = ruleParam.getString("rule_name");
        result += "\n\t\t" + "rule_name" + ": " + ruleName +"";
        Bundle criteriaBundle = ruleParam.getBundle("criteria");
        ArrayList<Bundle> actionBundleList = ruleParam.getParcelableArrayList("actions");
        if(criteriaBundle!= null){
            result+= "\n\t\t" + "criteria" + ": " +processCriteriaBundle(criteriaBundle);
        }

        if(actionBundleList!= null){
            result+= "\n\t\t" + "actions" + ": " +processActionBundle(actionBundleList);
        }
    }
    return result;
}

private String processActionBundle(ArrayList<Bundle> actionBundleList){
    String result = "";
    for(Bundle actionBundle: actionBundleList){
        String actionKey = actionBundle.getString("action_key");
        String actionValue = actionBundle.getString("action_value");
        result+= "\n\t\t\t" + "action_key" + ": " + actionKey +" , action_value"+": "+actionValue;
    }
    return result;
}

private String processCriteriaBundle(Bundle criteriaBundle){
    String result = "";
    for (String key : criteriaBundle.keySet()){
        Object object = criteriaBundle.get(key);
        if(object instanceof ArrayList){
            result+= "\n\t\t\t" + "criteria_key" + ": " + key +" , criteria_value"+": ";
            ArrayList<Bundle> bundleArrayList = criteriaBundle.getParcelableArrayList(key);
            for (Bundle bundle: bundleArrayList){
                String criteriaKey = bundle.getString("criteria_key");
                String criteriaValue = bundle.getString("criteria_value");
                result+= "\n\t\t\t\t" + "criteria_key" + ": " + criteriaKey +" , criteria_value"+": " +criteriaValue;
            }
        }else if(object instanceof String[]){
            String[] valueArray = criteriaBundle.getStringArray(key);
            if(valueArray!= null){
                String value = Arrays.toString(valueArray);
                //result+= value;
                result+= "\n\t\t\t" + "criteria_key" + ": " + key +" , criteria_value"+": " +value ;
            }

        }
    }
    return result;

}

Get Workflow Input configuration

Retrieve the Workflow Input parameters from OCR Wedge (license plate, identification document, vehicle identification number, tire identification number, meter) and Image Capture:

public void getConfig() {
    Intent i = new Intent();
    Bundle bMain = new Bundle();
    bMain.putString("PROFILE_NAME", "Demo");
    Bundle bConfig = new Bundle();
    ArrayList<String> pluginName = new ArrayList<>();
    pluginName.add("WORKFLOW");
    bConfig.putStringArrayList("PLUGIN_NAME", pluginName);
    bMain.putBundle("PLUGIN_CONFIG", bConfig);
    i.setPackage("com.symbol.datawedge");
    i.setAction("com.symbol.datawedge.api.ACTION");
    i.putExtra("APPLICATION_PACKAGE", getPackageName());
    i.putExtra("com.symbol.datawedge.api.GET_CONFIG", bMain);
    this.sendBroadcast(i);
}

// Broadcast Receiver
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String strFinalResult = "";
        if (intent.hasExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG")) {
            Bundle resultGetConfig = intent.getBundleExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG");
            Set<String> keys = resultGetConfig.keySet();
            String profileName = resultGetConfig.getString("PROFILE_NAME");

            for (String key : keys){
                if (key.equalsIgnoreCase("PLUGIN_CONFIG")){
                    ArrayList<Bundle> bundleArrayList = resultGetConfig.getParcelableArrayList("PLUGIN_CONFIG");
                    for (Bundle configBundle : bundleArrayList){
                        String pluginName = configBundle.getString("PLUGIN_NAME");
                        if (pluginName != null && pluginName.equalsIgnoreCase("WORKFLOW")){
                            ArrayList<Bundle> paramBundle = configBundle.getParcelableArrayList("PARAM_LIST");
                            strFinalResult += "\n Profile name: "+ profileName;

                            for (Bundle workflow:paramBundle) {
                                for (String wkey:workflow.keySet()) {
                                    if(wkey.equalsIgnoreCase("workflow_name")) {
                                        strFinalResult += "\n" + wkey + ": " + workflow.get(wkey) + "";
                                    }
                                    if(wkey.equalsIgnoreCase("workflow_input_source")) {
                                        strFinalResult += "\n" + wkey + ": " + workflow.get(wkey) + "";
                                    }
                                    else if(wkey.equalsIgnoreCase("workflow_params")) {
                                        ArrayList<Bundle> moduleParams = workflow.getParcelableArrayList("workflow_params");
                                        for (Bundle module:moduleParams) {
                                            strFinalResult += "\n module: " + module.get("module") ;
                                            for (String mkey:module.keySet()) {
                                                if(mkey.equalsIgnoreCase("module_params")) {
                                                    Bundle moduleParams1 = module.getBundle(mkey);
                                                    for (String pkey:moduleParams1.keySet()) {
                                                        String value =  moduleParams1.getString(pkey);
                                                        strFinalResult += "\n\t\t" + pkey + ": " + value;
                                                    }
                                                }

                                            }
                                        }

                                    }
                                }
                            }
                        }
                        else if(pluginName != null && pluginName.equalsIgnoreCase("BARCODE")){
                            Bundle b  = configBundle.getBundle("PARAM_LIST");
                            for (String bkey:b.keySet()) {
                                if(bkey.equalsIgnoreCase("barcode_highlighting_rules")){
                                    strFinalResult +="\n" + bkey + ": " + processRulesBundle(b.getParcelableArrayList(bkey));
                                }else {
                                    strFinalResult += "\n" + bkey + ": " + b.get(bkey) + "";
                                }
                            }
                        }
                    }

                    Log.d("TAG", "#IntentApp#\n\nGet config info received\n" + strFinalResult);
                }
            }
        }
    }
};

private String processRulesBundle(ArrayList<Bundle> rulesBundleList){
    String result = "";
    if(rulesBundleList!= null && !rulesBundleList.isEmpty()) {
        for (Bundle rule : rulesBundleList) {
            String paramID = rule.getString("rule_param_id");
            ArrayList<Bundle> ruleParamList = rule.getParcelableArrayList("rule_list");
            if (ruleParamList != null && !ruleParamList.isEmpty()) {
                result += "\n\t" + "rule_param_id" + ": " + paramID + "";
                result += "\n\t" + "rules_list" + ": " + processRuleParamBundle(ruleParamList);
            }
        }
    }
    return result;
}

private String processRuleParamBundle(ArrayList<Bundle> ruleParamList){
    String result = "";
    for(Bundle ruleParam: ruleParamList){
        String ruleName = ruleParam.getString("rule_name");
        result += "\n\t\t" + "rule_name" + ": " + ruleName +"";
        Bundle criteriaBundle = ruleParam.getBundle("criteria");
        ArrayList<Bundle> actionBundleList = ruleParam.getParcelableArrayList("actions");
        if(criteriaBundle!= null){
            result+= "\n\t\t" + "criteria" + ": " +processCriteriaBundle(criteriaBundle);
        }

        if(actionBundleList!= null){
            result+= "\n\t\t" + "actions" + ": " +processActionBundle(actionBundleList);
        }
    }
    return result;
}

private String processActionBundle(ArrayList<Bundle> actionBundleList){
    String result = "";
    for(Bundle actionBundle: actionBundleList){
        String actionKey = actionBundle.getString("action_key");
        String actionValue = actionBundle.getString("action_value");
        result+= "\n\t\t\t" + "action_key" + ": " + actionKey +" , action_value"+": "+actionValue;
    }
    return result;
}

private String processCriteriaBundle(Bundle criteriaBundle){
    String result = "";
    for (String key : criteriaBundle.keySet()){
        Object object = criteriaBundle.get(key);
        if(object instanceof ArrayList){
            result+= "\n\t\t\t" + "criteria_key" + ": " + key +" , criteria_value"+": ";
            ArrayList<Bundle> bundleArrayList = criteriaBundle.getParcelableArrayList(key);
            for (Bundle bundle: bundleArrayList){
                String criteriaKey = bundle.getString("criteria_key");
                String criteriaValue = bundle.getString("criteria_value");
                result+= "\n\t\t\t\t" + "criteria_key" + ": " + criteriaKey +" , criteria_value"+": " +criteriaValue;
            }
        }else if(object instanceof String[]){
            String[] valueArray = criteriaBundle.getStringArray(key);
            if(valueArray!= null){
                String value = Arrays.toString(valueArray);
                //result+= value;
                result+= "\n\t\t\t" + "criteria_key" + ": " + key +" , criteria_value"+": " +value ;
            }


        }
    }
    return result;

}

Get inter-character settings

private Integer ctrlCharacterDelayValue;
private Integer genericCharacterDelayValue;
private Boolean flagExtendedASCIIOnly;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    registerReceivers();
    ctrlCharacterDelayValue = null;
    genericCharacterDelayValue = null;
    flagExtendedASCIIOnly = null;
}

private void registerReceivers() {
    IntentFilter filter = new IntentFilter();
    filter.addAction("com.symbol.datawedge.api.RESULT_ACTION");
    filter.addCategory(Intent.CATEGORY_DEFAULT);
    registerReceiver(broadcastReceiver, filter);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(broadcastReceiver);
}

//Get configuration
public void getKeyStrokeConfiguration(View arg){
    Bundle bMain = new Bundle();
    bMain.putString("PROFILE_NAME","Profile0 (default)");

    Bundle bConfig = new Bundle();
    bConfig.putString("PLUGIN_NAME","KEYSTROKE");

    bMain.putBundle("PLUGIN_CONFIG", bConfig);
    Intent i = new Intent();
    i.setAction("com.symbol.datawedge.api.ACTION");
    i.putExtra("com.symbol.datawedge.api.GET_CONFIG", bMain);
    this.sendBroadcast(i);
}

//broadcast receiver
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        Log.d(TAG, "#DataWedge-APP# Action: " + action);


    //result of get config
            if(intent.hasExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG")){
                Bundle bundle = intent.getBundleExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG");
                if(bundle != null && !bundle.isEmpty()){
                    String profileName = bundle.getString("PROFILE_NAME");
                    String profileEnabled = bundle.getString("PROFILE_ENABLED");
                    ArrayList<Bundle> configBundleList = bundle.getParcelableArrayList("PLUGIN_CONFIG");
                    if(configBundleList!=null) {
                        for (Bundle configBundle : configBundleList) {
                            if (configBundle.getString("PLUGIN_NAME").equalsIgnoreCase("KEYSTROKE")) {
                                Bundle paramBundle = configBundle.getBundle("PARAM_LIST");
                                String keyStrokePluginEnabled = paramBundle.getString("keystroke_output_enabled");
                                String mExtendedAsciiDelay = paramBundle.getString("keystroke_delay_extended_ascii");
                                String mCtrlDelay = paramBundle.getString("keystroke_delay_control_chars");
                                String actionKeyChar = paramBundle.getString("keystroke_action_char");

                                Log.d(TAG, " ProfileName :" + profileName);
                                Log.d(TAG, " Profile enabled :" + profileEnabled);
                                Log.d(TAG, " Plugin enabled :" + keyStrokePluginEnabled);
                                Log.d(TAG, " Ctrl Char Delay :" + mCtrlDelay);
                                Log.d(TAG, " Character Delay :" + mExtendedAsciiDelay);
                                Log.d(TAG, " ActionKey Char :" + actionKeyChar);
                            }
                        }
                    }
                }
            }//end get config

    }//end onRecieve
};

Get TOKEN processing

public void getConfig() {
    Bundle bMain = new Bundle();
    bMain.putString("PROFILE_NAME", "Profile007");
    Bundle bConfig = new Bundle();


    Bundle processPlugin_TOKEN_IP = new Bundle();
    processPlugin_TOKEN_IP.putString("PLUGIN_NAME", "TOKEN");
    processPlugin_TOKEN_IP.putString("OUTPUT_PLUGIN_NAME", "KEYSTROKE"); // Tokens are supported only in KEYSTROKE and IP plugins only, for others empty bundle will be returned.

    bConfig.putBundle("PROCESS_PLUGIN_NAME", processPlugin_TOKEN_IP);

    bMain.putBundle("PLUGIN_CONFIG", bConfig);
    Intent i = new Intent();
    i.setAction("com.symbol.datawedge.api.ACTION");
    i.putExtra("com.symbol.datawedge.api.GET_CONFIG", bMain);
    this.sendBroadcast(i);
}

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();

        String strFinalResult = "";
        String command = intent.getStringExtra("COMMAND");
        String commandidentifier = intent.getStringExtra("COMMAND_IDENTIFIER");
        String result = intent.getStringExtra("RESULT");
        Bundle bundle = new Bundle();
        String resultInfo = "";

        if (action.equals("com.symbol.datawedge.api.RESULT_ACTION")) {

            if (intent.hasExtra("RESULT_INFO")) {
                bundle = intent.getBundleExtra("RESULT_INFO");
                Set<String> keys = bundle.keySet();
                for (String key : keys) {
                    String val = bundle.getString(key);
                    if (val == null) {

                        if (bundle.getStringArray(key) != null) {
                            val = "";
                            for (String s : bundle.getStringArray(key)) {
                                val += "" + s + "\n";
                            }
                        }
                    }

                    resultInfo += key + ": " + val + "\n";
                }

            } else if (intent.hasExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG")) {

                Bundle resultGetConfig = intent.getBundleExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG");
                Set<String> keys = resultGetConfig.keySet();

                for (String key : keys) {
                    if (key.equalsIgnoreCase("PLUGIN_CONFIG")) {
                        ArrayList<Bundle> bundleArrayList = resultGetConfig.getParcelableArrayList("PLUGIN_CONFIG");
                        for (Bundle configBundle : bundleArrayList) {

                            String pluginName = configBundle.getString("PLUGIN_NAME");

                            strFinalResult += "\nPlugin " + pluginName + " Settings\n";

                            if (pluginName != null && pluginName.equalsIgnoreCase("TOKEN")) {
                                strFinalResult += "\nPlugin " + configBundle.getString("OUTPUT_PLUGIN_NAME") + " TOKEN Settings\n";
                                Set<String> keys2 = configBundle.keySet();
                                for (String key2 : keys2) {
                                    if (!key2.equalsIgnoreCase("PARAM_LIST")) {
                                    } else {
                                        Bundle params = configBundle.getBundle("PARAM_LIST");
                                        Set<String> keys3 = params.keySet();
                                        for (String key3 : keys3) {

                                            if (key3.equalsIgnoreCase("token_order")) {
                                                strFinalResult += "\n" + key3 + ": token_order\n";

                                                ArrayList<Bundle> tokenOrderList = params.getParcelableArrayList("token_order");
                                                int order = 0;
                                                for (Bundle b : tokenOrderList) {
                                                    strFinalResult += "\t" + order + ". " + b.getString("name") + ": " + b.getString("enabled") + "\n";
                                                    order++;
                                                }
                                            } else {
                                                strFinalResult += "\n" + key3 + ": " + params.get(key3);
                                            }
                                        }
                                    }
                                }
                                strFinalResult += "\n";
                            }
                        }
                    }
                }

                Log.d("TAG", "#IntentApp#\n\nGet config info received\n" + strFinalResult);
            }

            if (command != null) {
                if (command.equalsIgnoreCase("com.symbol.datawedge.api.SET_CONFIG")) {
                    Log.d("TAG", "#IntentApp# \n\nSetConfig status received: " + result + "\nResultInfo: " + resultInfo);
                }
            }
        }
    }
};

Get Workflow Data Output

public void getConfig() {
    Bundle bMain = new Bundle();
    bMain.putString("PROFILE_NAME", "Profile007");
    Bundle bConfig = new Bundle();

    Bundle processPlugin_TOKEN_IP = new Bundle();
    processPlugin_TOKEN_IP.putString("PLUGIN_NAME", "TOKEN");
    processPlugin_TOKEN_IP.putString("OUTPUT_PLUGIN_NAME", "KEYSTROKE"); // Tokens are supported only in KEYSTROKE and IP plugins only, for others empty bundle will be returned.

    bConfig.putBundle("PROCESS_PLUGIN_NAME", processPlugin_TOKEN_IP);

    bMain.putBundle("PLUGIN_CONFIG", bConfig);
    Intent i = new Intent();
    i.setAction("com.symbol.datawedge.api.ACTION");
    i.putExtra("com.symbol.datawedge.api.GET_CONFIG", bMain);
    this.sendBroadcast(i);
}

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();

        String strFinalResult = "";
        String command = intent.getStringExtra("COMMAND");
        String commandidentifier = intent.getStringExtra("COMMAND_IDENTIFIER");
        String result = intent.getStringExtra("RESULT");
        Bundle bundle = new Bundle();
        String resultInfo = "";

        if (action.equals("com.symbol.datawedge.api.RESULT_ACTION")) {

            if (intent.hasExtra("RESULT_INFO")) {
                bundle = intent.getBundleExtra("RESULT_INFO");
                Set<String> keys = bundle.keySet();
                for (String key : keys) {
                    String val = bundle.getString(key);
                    if (val == null) {

                        if (bundle.getStringArray(key) != null) {
                            val = "";
                            for (String s : bundle.getStringArray(key)) {
                                val += "" + s + "\n";
                            }
                        }
                    }

                    resultInfo += key + ": " + val + "\n";
                }

            } else if (intent.hasExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG")) {

                Bundle resultGetConfig = intent.getBundleExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG");
                Set<String> keys = resultGetConfig.keySet();

                for (String key : keys) {
                    if (key.equalsIgnoreCase("PLUGIN_CONFIG")) {
                        ArrayList<Bundle> bundleArrayList = resultGetConfig.getParcelableArrayList("PLUGIN_CONFIG");
                        for (Bundle configBundle : bundleArrayList) {

                            String pluginName = configBundle.getString("PLUGIN_NAME");

                            strFinalResult += "\nPlugin " + pluginName + " Settings\n";

                            if (pluginName != null && pluginName.equalsIgnoreCase("TOKEN")) {
                                strFinalResult += "\nPlugin " + configBundle.getString("OUTPUT_PLUGIN_NAME") + " TOKEN Settings\n";
                                Set<String> keys2 = configBundle.keySet();
                                for (String key2 : keys2) {
                                    if (!key2.equalsIgnoreCase("PARAM_LIST")) {
                                    } else {
                                        Bundle params = configBundle.getBundle("PARAM_LIST");
                                        Set<String> keys3 = params.keySet();
                                        for (String key3 : keys3) {

                                            if (key3.equalsIgnoreCase("token_order")) {
                                                strFinalResult += "\n" + key3 + ": gs1_token_order\n";

                                                ArrayList<Bundle> tokenOrderList = params.getParcelableArrayList("token_order");
                                                int order = 0;
                                                for (Bundle b : tokenOrderList) {
                                                    strFinalResult += "\t" + order + ". " + b.getString("name") + ": " + b.getString("enabled") + "\n";
                                                    order++;
                                                }
                                            } else {
                                                strFinalResult += "\n" + key3 + ": " + params.get(key3);
                                            }
                                        }
                                    }
                                }
                                strFinalResult += "\n";
                            }
                        }
                    }
                }

                Log.d("TAG", "#IntentApp#\n\nGet config info received\n" + strFinalResult);
            }

            if (command != null) {
                if (command.equalsIgnoreCase("com.symbol.datawedge.api.SET_CONFIG")) {
                    Log.d("TAG", "#IntentApp# \n\nSetConfig status received: " + result + "\nResultInfo: " + resultInfo);
                }
            }
        }
    }
};

Get GS1 TOKEN processing

    public void getConfig() {
        Bundle bMain = new Bundle();
        bMain.putString("PROFILE_NAME", "Profile007");
        Bundle bConfig = new Bundle();


        Bundle processPlugin_TOKEN_IP = new Bundle();
        processPlugin_TOKEN_IP.putString("PLUGIN_NAME", "TOKEN");
        processPlugin_TOKEN_IP.putString("OUTPUT_PLUGIN_NAME", "KEYSTROKE"); // Tokens are supported only in KEYSTROKE and IP plugins only, for others empty bundle will be returned.

        bConfig.putBundle("PROCESS_PLUGIN_NAME", processPlugin_TOKEN_IP);

        bMain.putBundle("PLUGIN_CONFIG", bConfig);
        Intent i = new Intent();
        i.setAction("com.symbol.datawedge.api.ACTION");
        i.putExtra("com.symbol.datawedge.api.GET_CONFIG", bMain);
        this.sendBroadcast(i);
    }

    private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();

            String strFinalResult = "";
            String command = intent.getStringExtra("COMMAND");
            String commandidentifier = intent.getStringExtra("COMMAND_IDENTIFIER");
            String result = intent.getStringExtra("RESULT");
            Bundle bundle = new Bundle();
            String resultInfo = "";

            if (action.equals("com.symbol.datawedge.api.RESULT_ACTION")) {

                if (intent.hasExtra("RESULT_INFO")) {
                    bundle = intent.getBundleExtra("RESULT_INFO");
                    Set<String> keys = bundle.keySet();
                    for (String key : keys) {
                        String val = bundle.getString(key);
                        if (val == null) {

                            if (bundle.getStringArray(key) != null) {
                                val = "";
                                for (String s : bundle.getStringArray(key)) {
                                    val += "" + s + "\n";
                                }
                            }
                        }

                        resultInfo += key + ": " + val + "\n";
                    }

                } else if (intent.hasExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG")) {

                    Bundle resultGetConfig = intent.getBundleExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG");
                    Set<String> keys = resultGetConfig.keySet();

                    for (String key : keys) {
                        if (key.equalsIgnoreCase("PLUGIN_CONFIG")) {
                            ArrayList<Bundle> bundleArrayList = resultGetConfig.getParcelableArrayList("PLUGIN_CONFIG");
                            for (Bundle configBundle : bundleArrayList) {

                                String pluginName = configBundle.getString("PLUGIN_NAME");

                                strFinalResult += "\nPlugin " + pluginName + " Settings\n";

                                if (pluginName != null && pluginName.equalsIgnoreCase("TOKEN")) {
                                    strFinalResult += "\nPlugin " + configBundle.getString("OUTPUT_PLUGIN_NAME") + " TOKEN Settings\n";
                                    Set<String> keys2 = configBundle.keySet();
                                    for (String key2 : keys2) {
                                        if (!key2.equalsIgnoreCase("PARAM_LIST")) {
                                        } else {
                                            Bundle params = configBundle.getBundle("PARAM_LIST");
                                            Set<String> keys3 = params.keySet();
                                            for (String key3 : keys3) {

                                                if (key3.equalsIgnoreCase("gs1_token_order")) {
                                                    strFinalResult += "\n" + key3 + ": gs1_token_order\n";

                                                    ArrayList<Bundle> tokenOrderList = params.getParcelableArrayList("gs1_token_order");
                                                    int order = 0;
                                                    for (Bundle b : tokenOrderList) {
                                                        strFinalResult += "\t" + order + ". " + b.getString("name") + ": " + b.getString("enabled") + "\n";
                                                        order++;
                                                    }
                                                } else {
                                                    strFinalResult += "\n" + key3 + ": " + params.get(key3);
                                                }
                                            }
                                        }
                                    }
                                    strFinalResult += "\n";
                                }
                            }
                        }
                    }

                    Log.d("TAG", "#IntentApp#\n\nGet config info received\n" + strFinalResult);
                }

                if (command != null) {
                    if (command.equalsIgnoreCase("com.symbol.datawedge.api.SET_CONFIG")) {
                        Log.d("TAG", "#IntentApp# \n\nSetConfig status received: " + result + "\nResultInfo: " + resultInfo);
                    }
                }
            }
        }
    };

GET RFID input configuration

private void getIntentConfigRFID() { 
        Bundle bMain = new Bundle(); 
        bMain.putString("PROFILE_NAME", "SampleConfigApi"); 
        Bundle bConfig = new Bundle(); 
        ArrayList<String> pluginName = new ArrayList<>(); 
        pluginName.add("RFID"); 
 
        bConfig.putStringArrayList("PLUGIN_NAME", pluginName); 
        bMain.putBundle("PLUGIN_CONFIG", bConfig); 
 
        Intent i = new Intent(); 
        i.setAction("com.symbol.datawedge.api.ACTION"); 
        i.putExtra("com.symbol.datawedge.api.GET_CONFIG", bMain); 
        this.sendBroadcast(i); 
    } 
 
// BroadcastReceiver to handle incoming data 
 
    private BroadcastReceiver reciveResulyBroadcast = new BroadcastReceiver(){ 
 
        @Override 
        public void onReceive(Context context, Intent intent) { 
            if (intent.hasExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG")) { 
                Bundle result = intent.getBundleExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG"); 
                Set<String> keys = result.keySet(); 
                for (String key : keys) { ; 
                    if (!key.equalsIgnoreCase("PLUGIN_CONFIG")) { 
                        Log.d("DWScannerConfig", "DWGetConfig::level-1: " + key + " : " + result.getString(key)); 
                    } else { 
                        ArrayList<Bundle> bundleArrayList = result.getParcelableArrayList("PLUGIN_CONFIG"); 
                        for (Bundle configBundle : bundleArrayList) { 
                            Set<String> keys2 = configBundle.keySet(); 
                            for (String key2 : keys2) { 
                                if (!key2.equalsIgnoreCase("PARAM_LIST")) { 
                                } else { 
                                    Bundle params = configBundle.getBundle("PARAM_LIST"); 
                                    Set<String> keys3 = params.keySet(); 
 
                                    String configs =intentData.getText()+"\n\n\n" +configBundle.getString("PLUGIN_NAME")+"\n"; 
                                    for (String key3 : keys3) { 
                                        configs+= key3+"="+params.getString(key3)+"\n"; 
                                    } 
 
                                    intentData.setText(configs); 
                                } 
                            } 
                        } 
                    } 
                } 
            } 
        } 
    }

Get SERIAL input configuration

final String RESULT_ACTION = "com.symbol.datawedge.api.RESULT_ACTION";
final static String DEFAULT_CATEGORY = "android.intent.category.DEFAULT";

TextView status;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    IntentFilter filter = new IntentFilter();
    filter.addAction(RESULT_ACTION);
    filter.addCategory(DEFAULT_CATEGORY);
    registerReceiver(dwResultReciever, filter);
}

public void btnGetOnClick(View view) {
    status.setText("");

    //MAIN BUNDLE PROPERTIES
    Bundle bMain = new Bundle();
    bMain.putString("PROFILE_NAME", "Profile0 (default)");
    //bMain.putString("PROFILE_NAME", "DWDemo");

    //PLUGIN_CONFIG BUNDLE PROPERTIES
    Bundle bConfig = new Bundle();

    ArrayList<String> pluginName = new ArrayList<>();
    pluginName.add("SERIAL");

    bConfig.putStringArrayList("PLUGIN_NAME", pluginName);
    bMain.putBundle("PLUGIN_CONFIG", bConfig);

    Intent i = new Intent();
    i.setAction("com.symbol.datawedge.api.ACTION");
    i.putExtra("SEND_RESULT","LAST_RESULT");
    // i.putExtra("SEND_RESULT", "true");  // For versions prior to DataWedge 7.1
    i.putExtra("com.symbol.datawedge.api.GET_CONFIG", bMain);
    this.sendBroadcast(i);
}

private BroadcastReceiver dwResultReciever = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String text = "";
        if (intent.getAction().equalsIgnoreCase("com.symbol.datawedge.api.RESULT_ACTION")) {
            if (intent.hasExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG")) {
                Bundle bundle = intent.getBundleExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG");
                if (bundle != null && !bundle.isEmpty()) {
                    String profileName = bundle.getString("PROFILE_NAME");
                    String profileEnabled = bundle.getString("PROFILE_ENABLED");
                    ArrayList<Bundle> configBundleList = bundle.getParcelableArrayList("PLUGIN_CONFIG");
                    if (configBundleList != null) {
                        for (Bundle configBundle : configBundleList) {
                            if (configBundle.getString("PLUGIN_NAME").equalsIgnoreCase("SERIAL")) {
                                Parcelable[] deviceBundleList = configBundle.getParcelableArray("DEVICE_LIST");

                                for (Parcelable parcelableDevice : deviceBundleList) {
                                    Bundle device = (Bundle) parcelableDevice;

                                    Log.d("TAG", "#Serial# " + device.getString("serial_port_id"));
                                    Log.d("TAG", "#Serial# " + device.getString("serial_input_enabled"));
                                    Log.d("TAG", "#Serial# " + device.getString("serial_baudrate"));
                                    Log.d("TAG", "#Serial# " + device.getString("serial_databits"));
                                    Log.d("TAG", "#Serial# " + device.getString("serial_parity"));
                                    Log.d("TAG", "#Serial# " + device.getString("serial_stopbits"));
                                    Log.d("TAG", "#Serial# " + device.getString("serial_flow"));
                                }
                            }
                        }
                    }
                }
            }
            status.setText("Status:\n" + text);
        }
    }
};

Get SIMULSCAN input configuration

public void getConfig()
{
    Bundle bMain = new Bundle();
    bMain.putString("PROFILE_NAME", "Profile007");
    Bundle bConfig = new Bundle();
    ArrayList<String> pluginName = new ArrayList<>();
    pluginName.add("SIMULSCAN");

    bConfig.putStringArrayList("PLUGIN_NAME", pluginName);
    bMain.putBundle("PLUGIN_CONFIG", bConfig);
    Intent i = new Intent();
    i.setAction("com.symbol.datawedge.api.ACTION");
    i.putExtra("com.symbol.datawedge.api.GET_CONFIG", bMain);
    this.sendBroadcast(i);
}

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();

        String strFinalResult = "";
        String command = intent.getStringExtra("COMMAND");
        String commandidentifier = intent.getStringExtra("COMMAND_IDENTIFIER");
        String result = intent.getStringExtra("RESULT");
        Bundle bundle = new Bundle();
        String resultInfo = "";

        if (action.equals("com.symbol.datawedge.api.RESULT_ACTION")) {

            if (intent.hasExtra("RESULT_INFO")) {
                bundle = intent.getBundleExtra("RESULT_INFO");
                Set<String> keys = bundle.keySet();
                for (String key : keys) {
                    String val = bundle.getString(key);
                    if(val == null) {

                        if(bundle.getStringArray(key) != null) {
                            val="";
                            for (String s : bundle.getStringArray(key)) {
                                val += "" + s + "\n";
                            }
                        }
                    }

                    resultInfo += key + ": " + val + "\n";
                }

            } else if (intent.hasExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG")) {

                Bundle resultGetConfig = intent.getBundleExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG");
                Set<String> keys = resultGetConfig.keySet();
                String profileName = resultGetConfig.getString("PROFILE_NAME");
                for (String key : keys) {
                    if (key.equalsIgnoreCase("PLUGIN_CONFIG")) {
                        ArrayList<Bundle> bundleArrayList = resultGetConfig.getParcelableArrayList("PLUGIN_CONFIG");
                        for (Bundle configBundle : bundleArrayList) {

                                strFinalResult += "\nPlugin " + configBundle.getString("PLUGIN_NAME") + " Settings\n";
                                for (String configBundleKey : configBundle.keySet()) {
                                    if (configBundleKey.equalsIgnoreCase("PARAM_LIST")) {

                                        Bundle params = configBundle.getBundle("PARAM_LIST");

                                        for (String paramKey :  params.keySet()) {

                                            if(paramKey.equalsIgnoreCase("simulscan_template_params")) {
                                                Bundle simulscan_template_params = params.getBundle("simulscan_template_params");
                                                if (simulscan_template_params != null) {
                                                    strFinalResult += "\n\tDynamic template params";
                                                    for (String template_param : simulscan_template_params.keySet()) {
                                                        strFinalResult += "\n\t\t" + template_param + ": " + simulscan_template_params.get(template_param);
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                strFinalResult += "\n\t" + paramKey + ": " + params.get(paramKey);
                                            }

                                        }
                                    }
                                }
                                strFinalResult += "\n";
                        }
                    }
                }
                Log.d("TAG","#IntentApp#\n\nGet config info received\n" + strFinalResult);
            }

            if (command != null) {
                if (command.equalsIgnoreCase("com.symbol.datawedge.api.SET_CONFIG")) {
                    Log.d("TAG","#IntentApp# \n\nSetConfig status received: " + result + "\nResultInfo: " + resultInfo);
                }
            }
        }
    }
};

Get DCP input configuration

// Get Data Capture Plus Input configuration
public void getConfig() {

    Bundle bMain = new Bundle();
    bMain.putString("PROFILE_NAME", "Profile007");
    bMain.putString("DCP", "");
    Intent i = new Intent();
    i.setAction("com.symbol.datawedge.api.ACTION");
    i.putExtra("com.symbol.datawedge.api.GET_CONFIG", bMain);
    this.sendBroadcast(i);
}

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();

        String strFinalResult = "";
        String command = intent.getStringExtra("COMMAND");
        String commandidentifier = intent.getStringExtra("COMMAND_IDENTIFIER");
        String result = intent.getStringExtra("RESULT");
        Bundle bundle = new Bundle();
        String resultInfo = "";

        if (action.equals("com.symbol.datawedge.api.RESULT_ACTION")) {

            if (intent.hasExtra("RESULT_INFO")) {
                bundle = intent.getBundleExtra("RESULT_INFO");
                Set<String> keys = bundle.keySet();
                for (String key : keys) {
                    String val = bundle.getString(key);
                    if (val == null) {

                        if (bundle.getStringArray(key) != null) {
                            val = "";
                            for (String s : bundle.getStringArray(key)) {
                                val += "" + s + "\n";
                            }
                        }
                    }

                    resultInfo += key + ": " + val + "\n";
               }

            } else if (intent.hasExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG")) {

                Bundle resultGetConfig = intent.getBundleExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG");
                Set<String> keys = resultGetConfig.keySet();
                String profileName = resultGetConfig.getString("PROFILE_NAME");
                for (String key : keys) {
                    if (key.equalsIgnoreCase("DCP")) {
                        strFinalResult += "\n";
                        Bundle dcpSettings = resultGetConfig.getBundle("DCP");
                        if (dcpSettings == null) {
                            strFinalResult += "\nDCP Settings are not found for " + profileName;
                        } else {

                            strFinalResult += "\nDCP Settings";

                            for (String dcpKey : dcpSettings.keySet()) {
                                strFinalResult += "\n\t\t" + dcpKey + ": " + dcpSettings.getString(dcpKey);
                            }
                        }

                        strFinalResult += "\n";
                    }
                }

                Log.d("TAG", "#IntentApp#\n\nGet config info received\n" + strFinalResult);
            }

            if (command != null) {
                if (command.equalsIgnoreCase("com.symbol.datawedge.api.SET_CONFIG")) {
                    Log.d("TAG", "#IntentApp# \n\nSetConfig status received: " + result + "\nResultInfo: " + resultInfo);
                }
            }

        }
    }
};

Get MSR input configuration

// Get Magnetic Stripe Reader Input configuration
public void getConfig()
{
    Bundle bMain = new Bundle();
    bMain.putString("PROFILE_NAME", "Profile007");
    Bundle bConfig = new Bundle();
    bConfig.putString("PLUGIN_NAME", "MSR");
    bMain.putBundle("PLUGIN_CONFIG", bConfig);
    Intent i = new Intent();
    i.setAction("com.symbol.datawedge.api.ACTION");
    i.putExtra("com.symbol.datawedge.api.GET_CONFIG", bMain);
    this.sendBroadcast(i);
}

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();

        String strFinalResult = "";
        String command = intent.getStringExtra("COMMAND");
        String commandidentifier = intent.getStringExtra("COMMAND_IDENTIFIER");
        String result = intent.getStringExtra("RESULT");
        Bundle bundle = new Bundle();
        String resultInfo = "";

        if (action.equals("com.symbol.datawedge.api.RESULT_ACTION")) {

            if (intent.hasExtra("RESULT_INFO")) {
                bundle = intent.getBundleExtra("RESULT_INFO");
                Set<String> keys = bundle.keySet();
                for (String key : keys) {
                    String val = bundle.getString(key);
                    if(val == null) {

                        if(bundle.getStringArray(key) != null) {
                            val="";
                            for (String s : bundle.getStringArray(key)) {
                                val += "" + s + "\n";
                            }
                        }
                    }

                    resultInfo += key + ": " + val + "\n";
                }

            } else if (intent.hasExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG")) {

                Bundle resultGetConfig = intent.getBundleExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG");
                Set<String> keys = resultGetConfig.keySet();
                String profileName = resultGetConfig.getString("PROFILE_NAME");
                for (String key : keys) {
                    if (key.equalsIgnoreCase("PLUGIN_CONFIG")) {
                        ArrayList<Bundle> bundleArrayList = resultGetConfig.getParcelableArrayList("PLUGIN_CONFIG");
                        for (Bundle configBundle : bundleArrayList) {

                                strFinalResult += "\nPlugin " + configBundle.getString("PLUGIN_NAME") + " Settings\n";
                                for (String configBundleKey : configBundle.keySet()) {
                                    if (configBundleKey.equalsIgnoreCase("PARAM_LIST")) {

                                        Bundle params = configBundle.getBundle("PARAM_LIST");

                                        for (String paramKey :  params.keySet()) {

                                            strFinalResult += "\n\t" + paramKey + ": " + params.get(paramKey);

                                        }
                                    }
                                }
                                strFinalResult += "\n";

                        }
                    }
                }

                Log.d("TAG","#IntentApp#\n\nGet config info received\n" + strFinalResult);

            }

            if (command != null) {
                if (command.equalsIgnoreCase("com.symbol.datawedge.api.SET_CONFIG")) {
                    Log.d("TAG","#IntentApp# \n\nSetConfig status received: " + result + "\nResultInfo: " + resultInfo);
                }
            }

        }
    }
};

Get Enterprise Keyboard Configuration

public void getConfig(View view) {

    Bundle bMain = new Bundle();
    bMain.putString("PROFILE_NAME", "ZebraEKB");
    bMain.putString("EKB", "");
    Intent i = new Intent();
    i.setAction("com.symbol.datawedge.api.ACTION");
    i.putExtra("com.symbol.datawedge.api.GET_CONFIG", bMain);
    this.sendBroadcast(i);
}

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        String strFinalResult = "";
        if (action.equals("com.symbol.datawedge.api.RESULT_ACTION")) {

            if (intent.hasExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG")) { // Reading GET_CONFIG result

                Bundle resultGetConfig = intent.getBundleExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG");
                Set<String> keys = resultGetConfig.keySet();
                String profileName = resultGetConfig.getString("PROFILE_NAME");
                strFinalResult = "Profile name: " + profileName;

                for (String key : keys) {

                    if (key.equalsIgnoreCase("EKB")) {
                        strFinalResult += "\n";
                        Bundle ekbSettings = resultGetConfig.getBundle("EKB");
                        if (ekbSettings == null) {
                            strFinalResult += "\nEKB Settings are not found for " + profileName;
                        }
                        else {
                            strFinalResult += "\nEKB Settings";

                            for (String ekbKey : ekbSettings.keySet()) {
                                if (ekbKey.equals("ekb_layout")) {
                                    strFinalResult += "\n\t\t" + ekbKey + ": ";
                                    Bundle ekbLayoutSettings = ekbSettings.getBundle("ekb_layout");
                                    if(ekbLayoutSettings != null){
                                        for (String ekbLayoutKey : ekbLayoutSettings.keySet()) {
                                            strFinalResult += "\n\t\t\t" + ekbLayoutKey + ": " + ekbLayoutSettings.getString(ekbLayoutKey);
                                        }
                                    }
                                    else {
                                        strFinalResult+= "no layout defined, default will be used";
                                    }
                                }
                                else {
                                    strFinalResult += "\n\t\t" + ekbKey + ": " + ekbSettings.getString(ekbKey);
                                }
                            }
                        }

                        strFinalResult += "\n";
                    }
                    if (key.equalsIgnoreCase("RESULT_CODE")) {
                        strFinalResult += "\nRESULT_CODE: " + resultGetConfig.getString("RESULT_CODE");
                    }
                }
                Log.d("TAG", "#IntentApp#\n\nGet config info received\n" + strFinalResult);
            }
        }
    }
};

Get configuration for multiple modules (full profile) in a single intent

Support started with DataWedge 7.1. Previous DataWedge versions required multiple intent calls to retrieve information from multiple modules (plugins, APP_LIST, and Data Capture Plus).

// Get full profile configuration in a single broadcast intent and process the result

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    IntentFilter filter = new IntentFilter();
    filter.addAction("com.symbol.datawedge.api.RESULT_ACTION");
    filter.addCategory("android.intent.category.DEFAULT");
    registerReceiver(broadcastReceiver, filter);
    getConfig();
}

public void getConfig() {

    Intent i = new Intent();
    i.setAction("com.symbol.datawedge.api.ACTION");
    i.putExtra("com.symbol.datawedge.api.GET_CONFIG",  "Profile007");
    this.sendBroadcast(i);
}

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();

        String strFinalResult = "";

        if (action.equals("com.symbol.datawedge.api.RESULT_ACTION")) {

            if (intent.hasExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG")) {

                Bundle resultGetConfig = intent.getBundleExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG");
                Set<String> keys = resultGetConfig.keySet();
                String profileName = resultGetConfig.getString("PROFILE_NAME");


                for (String key : keys) {

                    if (key.equalsIgnoreCase("PLUGIN_CONFIG")) {
                        ArrayList<Bundle> bundleArrayList = resultGetConfig.getParcelableArrayList("PLUGIN_CONFIG");
                        for (Bundle configBundle : bundleArrayList) {

                            String pluginName = configBundle.getString("PLUGIN_NAME");
                            if (pluginName != null && pluginName.equalsIgnoreCase("ADF")) {

                                strFinalResult += "\nPlugin " + configBundle.getString("OUTPUT_PLUGIN_NAME") + " ADF Settings\n";

                                String pluginEnabled = configBundle.getString("adf_enabled");
                                strFinalResult += "\n Plugin Enabled :" + pluginEnabled;
                                if (configBundle.containsKey("PARAM_LIST")) {
                                    Object object = configBundle.get("PARAM_LIST");
                                    if (object != null && object instanceof ArrayList) {
                                        ArrayList<Bundle> paramArrayList = (ArrayList) object;
                                        for (Bundle rule : paramArrayList) {
                                            String name = rule.getString("name");
                                            String enabled = rule.getString("enabled");
                                            String priority = rule.getString("priority");
                                            String alldevices = rule.getString("alldevices");
                                            String string = rule.getString("string");
                                            String stringPos = rule.getString("string_pos");
                                            String stringLen = rule.getString("string_len");

                                            strFinalResult += "\nRule ->";
                                            strFinalResult += "\n name :" + name;
                                            strFinalResult += "\n enabled :" + enabled;
                                            strFinalResult += "\n priority :" + priority;
                                            strFinalResult += "\n alldevices :" + alldevices;
                                            strFinalResult += "\n string :" + string;
                                            strFinalResult += "\n stringPos :" + stringPos;
                                            strFinalResult += "\n stringLen :" + stringLen;
                                            ArrayList<Bundle> actions = rule.getParcelableArrayList("ACTIONS");
                                            if (actions != null) {
                                                Log.d("TAG", "\n  Actions->");
                                                for (Bundle bAction : actions) {
                                                    String type = bAction.getString("type");
                                                    Object param_1 = bAction.get("action_param_1");
                                                    Object param_2 = bAction.get("action_param_2");
                                                    Object param_3 = bAction.get("action_param_3");

                                                    strFinalResult += "\n  type:" + type;
                                                    if (param_1 != null && param_1 instanceof String) {
                                                        strFinalResult += "\n  param_1:" + param_1;
                                                    }
                                                    if (param_2 != null && param_2 instanceof String) {
                                                        strFinalResult += "\n  param_2:" + param_2;
                                                    }
                                                    if (param_3 != null && param_3 instanceof String) {
                                                        strFinalResult += "\n  param_3:" + param_3;
                                                    }

                                                }
                                            }
                                            ArrayList<Bundle> devices = rule.getParcelableArrayList("DEVICES");
                                            if (devices != null) {
                                                Log.d("TAG", "\n  Devices->");
                                                for (Bundle device : devices) {
                                                    String type = device.getString("device_id");
                                                    Object param_1 = device.get("enabled");
                                                    Object param_2 = device.get("alldecoders");
                                                    Object param_3 = device.get("all_label_ids");

                                                    strFinalResult += "\n  Device ID:" + type;
                                                    if (param_1 != null && param_1 instanceof String) {
                                                        strFinalResult += "\n      Enabled:" + param_1;
                                                    }
                                                    if (param_2 != null && param_2 instanceof String) {
                                                        strFinalResult += "\n  All decoders:" + param_2;
                                                    }
                                                    if (param_3 != null && param_3 instanceof String) {
                                                        strFinalResult += "\n  All labelids:" + param_3;
                                                    }

                                                }
                                            }
                                            ArrayList<Bundle> decoders = rule.getParcelableArrayList("DECODERS");
                                            if (decoders != null) {
                                                strFinalResult += "\n  Decoders->";
                                                for (Bundle decoder : decoders) {
                                                    String deviceID = decoder.getString("device_id");
                                                    String decoderEnabled = decoder.getString("enabled");
                                                    String decoderID = decoder.getString("decoder");

                                                    strFinalResult += "\n        Device ID:" + deviceID;
                                                    strFinalResult += "\n  Decoder Enabled:" + decoderEnabled;
                                                    strFinalResult += "\n       Decoder ID:" + decoderID;
                                                }
                                            }

                                            ArrayList<Bundle> labelIDs = rule.getParcelableArrayList("LABEL_IDS");
                                            if (labelIDs != null) {
                                                strFinalResult += "\n  LabelIDs->";
                                                for (Bundle labelID : labelIDs) {
                                                    String deviceID = labelID.getString("device_id");
                                                    String lblEnabled = labelID.getString("enabled");
                                                    String lblID = labelID.getString("label_id");

                                                    strFinalResult += "\n      Device ID:" + deviceID;
                                                    strFinalResult += "\n  Label Enabled:" + lblEnabled;
                                                    strFinalResult += "\n       Label ID:" + lblID;
                                                }
                                            }
                                        }
                                    }
                                }
                            } else if (pluginName != null && pluginName.equalsIgnoreCase("TOKEN")) {
                                strFinalResult += "\nPlugin " + configBundle.getString("OUTPUT_PLUGIN_NAME") + " TOKEN Settings\n";
                                Set<String> keys2 = configBundle.keySet();
                                for (String key2 : keys2) {
                                    if (!key2.equalsIgnoreCase("PARAM_LIST")) {
                                    } else {
                                        Bundle params = configBundle.getBundle("PARAM_LIST");
                                        Set<String> keys3 = params.keySet();
                                        for (String key3 : keys3) {

                                            if (key3.equalsIgnoreCase("token_order")) {
                                                strFinalResult += "\n" + key3 + ": token_order\n";

                                                ArrayList<Bundle> tokenOrderList = params.getParcelableArrayList("token_order");
                                                int order = 0;
                                                for (Bundle b : tokenOrderList) {
                                                    strFinalResult += "\t" + order + ". " + b.getString("name") + ": " + b.getString("enabled") + "\n";
                                                    order++;
                                                }
                                            } else {
                                                strFinalResult += "\n" + key3 + ": " + params.get(key3);
                                            }
                                        }
                                    }
                                }
                                strFinalResult += "\n";
                            } else if (pluginName != null && pluginName.equalsIgnoreCase("BDF")) {
                                strFinalResult += "\n\nPlugin " + configBundle.getString("OUTPUT_PLUGIN_NAME") + " BDF Settings\n";
                                Set<String> keys2 = configBundle.keySet();
                                for (String key2 : keys2) {
                                    if (!key2.equalsIgnoreCase("PARAM_LIST")) {
                                    } else {
                                        Bundle params = configBundle.getBundle("PARAM_LIST");
                                        Set<String> keys3 = params.keySet();
                                        for (String key3 : keys3) {

                                            strFinalResult += "\n" + key3 + ": " + params.get(key3);
                                        }
                                    }
                                }
                                strFinalResult += "\n";
                            } else {
                                Set<String> keys2 = configBundle.keySet();
                                if (keys2.size() > 0) {

                                    if (configBundle.getString("PLUGIN_NAME") != null)
                                        strFinalResult += "\nPlugin " + configBundle.getString("PLUGIN_NAME") + " Settings\n";

                                    for (String key2 : keys2) {
                                        if (key2.equalsIgnoreCase("PARAM_LIST")) {

                                            Bundle params = configBundle.getBundle("PARAM_LIST");
                                            Set<String> keys3 = params.keySet();
                                            for (String key3 : keys3) {


                                                if (key3.equalsIgnoreCase("simulscan_template_params")) {
                                                    Bundle simulscan_template_params = params.getBundle("simulscan_template_params");
                                                    if (simulscan_template_params != null) {
                                                        strFinalResult += "\n\tDynamic template params";
                                                        for (String template_param : simulscan_template_params.keySet()) {
                                                            strFinalResult += "\n\t\t" + template_param + ": " + simulscan_template_params.get(template_param);
                                                        }
                                                    }
                                                } else {
                                                    strFinalResult += "\n\t" + key3 + ": " + params.get(key3);
                                                }

                                            }
                                        }
                                    }
                                }
                                strFinalResult += "\n";
                            }
                        }
                    } else if (key.equalsIgnoreCase("APP_LIST")) {
                        strFinalResult += "\n";
                        ArrayList<Bundle> appList = resultGetConfig.getParcelableArrayList("APP_LIST");
                        if (appList == null) {
                            strFinalResult += "\nProfile information is not found for " + profileName;
                        } else if (appList.size() == 0) {
                            Log.d("TAG", "Profile " + profileName + " has no associated information");
                            strFinalResult += "\n" + "Profile " + profileName + " has no associated information";
                        } else {
                            strFinalResult += "\nAPP LIST\n\n";
                            for (Bundle b1 : appList) {
                                strFinalResult += "\n" + b1.getString("PACKAGE_NAME") + ": " + b1.getStringArrayList("ACTIVITY_LIST");
                            }
                        }
                        strFinalResult += "\n";
                    } else if (key.equalsIgnoreCase("DCP")) {
                        strFinalResult += "\n";
                        Bundle dcpSettings = resultGetConfig.getBundle("DCP");
                        if (dcpSettings == null) {
                            strFinalResult += "\nDCP Settings are not found for " + profileName;
                        } else {

                            strFinalResult += "\nDCP Settings";

                            for (String dcpKey : dcpSettings.keySet()) {
                                strFinalResult += "\n\t\t" + dcpKey + ": " + dcpSettings.getString(dcpKey);
                            }
                        }

                        strFinalResult += "\n";
                    }
                    if (key.equalsIgnoreCase("RESULT_CODE")) {
                        strFinalResult += "\nRESULT_CODE: " + resultGetConfig.getString("RESULT_CODE");
                        ;
                    }
                }

                Log.d("TAG", "#IntentApp#\n\nGet config info received\n" + strFinalResult);

            }
        }
    }
};

Get IP output

// Get Internet Protocol Output
public void getConfig()
{
    Bundle bMain = new Bundle();
    bMain.putString("PROFILE_NAME", "Profile007");
    Bundle bConfig = new Bundle();
    bConfig.putString("PLUGIN_NAME", "IP");
    bMain.putBundle("PLUGIN_CONFIG", bConfig);
    Intent i = new Intent();
    i.setAction("com.symbol.datawedge.api.ACTION");
    i.putExtra("com.symbol.datawedge.api.GET_CONFIG", bMain);
    this.sendBroadcast(i);
}

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();

        String strFinalResult = "";
        String command = intent.getStringExtra("COMMAND");
        String commandidentifier = intent.getStringExtra("COMMAND_IDENTIFIER");
        String result = intent.getStringExtra("RESULT");
        Bundle bundle = new Bundle();
        String resultInfo = "";

        if (action.equals("com.symbol.datawedge.api.RESULT_ACTION")) {

            if (intent.hasExtra("RESULT_INFO")) {
                bundle = intent.getBundleExtra("RESULT_INFO");
                Set<String> keys = bundle.keySet();
                for (String key : keys) {
                    String val = bundle.getString(key);
                    if(val == null) {

                        if(bundle.getStringArray(key) != null) {
                            val="";
                            for (String s : bundle.getStringArray(key)) {
                                val += "" + s + "\n";
                            }
                        }
                    }

                    resultInfo += key + ": " + val + "\n";
                }

            } else if (intent.hasExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG")) {

                Bundle resultGetConfig = intent.getBundleExtra("com.symbol.datawedge.api.RESULT_GET_CONFIG");
                Set<String> keys = resultGetConfig.keySet();
                String profileName = resultGetConfig.getString("PROFILE_NAME");
                for (String key : keys) {
                    if (key.equalsIgnoreCase("PLUGIN_CONFIG")) {
                        ArrayList<Bundle> bundleArrayList = resultGetConfig.getParcelableArrayList("PLUGIN_CONFIG");
                        for (Bundle configBundle : bundleArrayList) {

                                strFinalResult += "\nPlugin " + configBundle.getString("PLUGIN_NAME") + " Settings\n";
                                for (String configBundleKey : configBundle.keySet()) {
                                    if (configBundleKey.equalsIgnoreCase("PARAM_LIST")) {

                                        Bundle params = configBundle.getBundle("PARAM_LIST");

                                        for (String paramKey :  params.keySet()) {

                                            strFinalResult += "\n\t" + paramKey + ": " + params.get(paramKey);

                                        }
                                    }
                                }
                                strFinalResult += "\n";

                        }
                    }
                }

                Log.d("TAG","#IntentApp#\n\nGet config info received\n" + strFinalResult);

            }

            if (command != null) {
                if (command.equalsIgnoreCase("com.symbol.datawedge.api.SET_CONFIG")) {
                    Log.d("TAG","#IntentApp# \n\nSetConfig status received: " + result + "\nResultInfo: " + resultInfo);
                }
            }

        }
    }
};

SEE ALSO:

Zebra Support Central | Integrator Guides, Product Manuals, Software Downloads and Support

LaunchPad | Zebra Developer Community

Intent | Android Developers

Intents and Intent Filters | Android Developers

Android Intents | Tutorial