Intent Result Codes

DataWedge 6.9

Overview

Introduced in DataWedge 6.5.

Intent result codes deliver status information about DataWedge API commands to help developers determine the flow of data and the function of their business logic. Result codes are implemented with some of the APIs Introduced in DataWedge 6.5 and have been added to many APIs that existed previously.

Result codes are accessed using the RESULT_INFO intent mechanism, which returns error codes if the app includes the intent extras RECEIVE_RESULT and COMMAND_IDENTIFIER as shown in the prototype below. See the Example section below for code showing how to register the app to receive result codes.

Function Prototype

// send the intent
    Intent i = new Intent();
    i.setAction(ACTION);
    i.putExtra("com.symbol.datawedge.api.CREATE_PROFILE", "Profile1");

// request and identify the result code
    i.putExtra("SEND_RESULT","true");
    i.putExtra("COMMAND_IDENTIFIER","123456789");
    this.sendBroadcast(i);

Parameters

RESULT [String]: Success/failure of the operation

COMMAND [String]: Name of the received intent command

COMMAND_IDENTIFIER [String]: Optional parameter for linking results to a specific command

RESULT_INFO [Bundle]: Can contain any of the fields below depending on the API in use:

  • PREVIOUS_DEFAULT_PROFILE - Specifies the previous default Profile when setting a new default Profile

  • PREVIOUS_PROFILE - Specifies the previous Profile in the parameter when switching and renaming a Profile

  • PROFILE_NAME - Always the current or next Profile name

  • RESULT_CODE - One of the possible result codes shown in list table

  • SOURCE_PROFILE_NAME - Specifies the source Profile when cloning a Profile

  • RESULT_CODE - returned only for FAILURE. Can contain any of the fields below depending on the API in use:

    • APP_ALREADY_ASSOCIATED - An attempt was made to associate an app that was already associated with another Profile
    • BUNDLE_EMPTY - The bundle contains no data
    • DATAWEDGE_ALREADY_DISABLED - An attempt was made to disable DataWedge when it was already disabled
    • DATAWEDGE_ALREADY_ENABLED - An attempt was made to enable DataWedge when it was already enabled
    • DATAWEDGE_DISABLED - An attempt was made to perform an operation when DataWedge was disabled
    • INPUT_NOT_ENABLED - An attempt was made to acquire data when the Barcode or SimulScan plug-in was disabled
    • OPERATION_NOT_ALLOWED - An attempt was made to rename or delete a protected Profile or to associate an app with Profile0
    • PARAMETER_INVALID - The passed parameters were empty, null or invalid
    • PLUGIN_NOT_SUPPORTED - An attempt was made to configure a plug-in that is not supported by DataWedge intent APIs
    • PLUGIN_BUNDLE_INVALID - A passed plug-in parameter bundle is empty or contains insufficient information
    • PROFILE_ALREADY_EXISTS - An attempt was made to create, clone or rename a Profile with a name that already exists
    • PROFILE_ALREADY_SET - An attempt was made to set the default Profile as the default Profile
    • PROFILE_DISABLED - An attempt was made to perform an operation on a disabled Profile
    • PLUGIN_DISABLED_IN_CONFIG - An attempt was made to enable or disable the scanner when barcode plug-in was disabled manually from the DataWedge UI
    • PROFILE_HAS_APP_ASSOCIATION - An attempt was made to switch to or set as the default a Profile that is already associated with another app
    • PROFILE_NAME_EMPTY - An attempt was made to configure an empty Profile name
    • PROFILE_NOT_FOUND - An attempt was made to perform an operation on a Profile that does not exist
    • SCANNER_ALREADY_DISABLED - An attempt was made to disable a scanner that is already disabled
    • SCANNER_ALREADY_ENABLED - An attempt was made to enable a scanner that is already enabled
    • SCANNER_DISABLE_FAILED - An exception occurred while disabling the scanner
    • SCANNER_ENABLE_FAILED - An exception occurred while enabling the scanner
    • UNKNOWN - An unidentified error occurred

Return Values

Error and debug messages are logged to the Android logging system, which can be viewed and filtered by the logcat command. Use logcat from an ADB shell to view the log messages:


$ adb logcat -s DWAPI

Error messages are logged for invalid actions and parameters.

Example Code

//SENDING THE INTENT
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.RESTORE_CONFIG", "");
this.sendBroadcast (i);

Generate and receive result codes

Command and configuration intent parameters determine whether to send result codes (disabled by default). When using SEND_RESULT, the COMMAND_IDENTIFIER is used to match the result code with the originating intent. Sample usage of these parameters is shown below.

Note: Modify this generic code to match the API being used.

// send the intent
    Intent i = new Intent();
    i.setAction(ACTION);
    i.putExtra("com.symbol.datawedge.api.CREATE_PROFILE", "Profile1");

// request and identify the result code
    i.putExtra("SEND_RESULT","true");
    i.putExtra("COMMAND_IDENTIFIER","123456789");
    this.sendBroadcast(i);

// register to receive the result
    public void onReceive(Context context, Intent intent){

        String command = intent.getStringExtra("COMMAND");
        String commandidentifier = intent.getStringExtra("COMMAND_IDENTIFIER");
        String result = intent.getStringExtra("RESULT");

        Bundle bundle = new Bundle();
        String resultInfo = "";
        if(intent.hasExtra("RESULT_INFO")){
            bundle = intent.getBundleExtra("RESULT_INFO");
            Set<String> keys = bundle.keySet();
            for (String key: keys) {
                resultInfo += key + ": "+bundle.getString(key) + "\n";
            }
        }

        String text = "Command: "+command+"\n" +
                      "Result: " +result+"\n" +
                      "Result Info: " +resultInfo + "\n" +
                      "CID:"+commandidentifier;

        Toast.makeText(context, text, Toast.LENGTH_LONG).show();

    };

Comments

The result intent mechanism does not perform parameter-level validation. It would be impossible, for example, for any app to validate every possible parameter for a scanner that's no longer connected. However, if a parameter value in a configuration is not valid when that Profile is loaded, DataWedege will use the default value for that parameter.


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