Send data back to the script which started the activity via adb shell am start Send data back to the script which started the activity via adb shell am start android android

Send data back to the script which started the activity via adb shell am start


If the data that you want to send back to your automation script could be serialized into a string less than 4k long - using logcat is a natural choice.Just make your activity to print the data to the log with Log.i("UNIQUE_TAG", the_data_string_you_want_to_send_back_to_your_script); and then use the following commands in your automation script to capture the output:

# clear the logcat bufferadb logcat -c# start your activityadb shell am start <INTENT># this line will block until a string with "UNIQUE_TAG" tag and "Info" priority# is printed to the main logadb shell 'logcat -b main -v raw -s UNIQUE_TAG:I | (read -n 1 && kill -2 $((BASHPID-1)))'# now you can capture the data and process itDATA=$(adb logcat -d -b main -v raw -s UNIQUE_TAG:I)

In more recent Android versions (7.0+) where logcat properly supports -m <count>, -t <time> and -T <time> parameters you can use this much simpler version without having to clear the log with logcat -c first:

# instead of clearing the log just get the current timestampTS=$(adb shell 'echo $EPOCHREALTIME; log ""')# start your activityadb shell am start <INTENT># this command will return immediately if the data has been printed already or block if notDATA=$(adb shell "logcat -b main -T $TS -m 1 -v raw -s UNIQUE_TAG:I")