How can I deliver parameters to a test function, that launched using adb shell am Instrumentation command

You can pass a data URI, mime type and even “extras” to the am command. You could pass them as “extras” and then get the extras that are passed to it.

The available options related to extras are:

  • -e | --es extra_key extra_string_value: Add string data as a key-value pair.
  • --ez extra_key extra_boolean_value: Add boolean data as a key-value pair.
  • --ei extra_key extra_int_value: Add integer data as a key-value pair.
  • --el extra_key extra_long_value: Add long data as a key-value pair.
  • --ef extra_key extra_float_value: Add float data as a key-value pair.
  • --eu extra_key extra_uri_value: Add URI data as a key-value pair.
  • --ecn extra_key extra_component_name_value: Add a component name, which is converted and passed as a ComponentName object.
  • --eia extra_key extra_int_value[,extra_int_value...]: Add an array of integers.
  • --ela extra_key extra_long_value[,extra_long_value...]: Add an array of longs.
  • --efa extra_key extra_float_value[,extra_float_value...]: Add an array of floats.

You would pass them like this:

adb shell am start -a android.intent.action.VIEW -c android.intent.category.DEFAULT 
  -e foo bar -e bert ernie -n my.package.component.blah

Then in your code:

Bundle extras = this.getIntent().getExtras();

if (extras != null) {
    if (extras.containsKey("foo")) {
        Log.d("FOO", extras.getString("foo"));
    } else {
        Log.d("FOO", "no foo here");
    }

    if (extras.containsKey("bert")) {
        Log.d("BERT", extras.getString("bert"));
    } else {
        Log.d("BERT", "Bert is all alone");
    }
} else {
    this.setTitle("no extras found");
}

Leave a Comment