Для передачи и изменения результата между ресиверами используются следующие методы:
setResultCode(code: Int) / getResultCode() – позволяют передать целочисленное значение.
getResultCode() по умолчанию возвращает -1.setResultData(data: String) / getResultData() – передают строковое значение следующим ресиверам. Значение по умолчанию –
null.setResultExtras(extras: Bundle) / getResultExtras(makeMap: Boolean) – самые полезные методы, потому что позволяют передать практически все что угодно в объекте
Bundle. getResultExtras(makeMap: Boolean) по умолчанию возвращает пустой объект Bundle, если параметр makeMap = true, иначе возвращает null.Метод setResult(code: Int, data: String, extras: Bundle) задает три типа результата одновременно.
Все перечисленные методы работают только с упорядоченными броадкастами. Узнать упорядоченный ли броадкаст внутри ресивера можно с помощью метода isOrderedBroadcast().
Результат, заданный в одном из упорядоченных ресиверов, передается всем последующим пока не будет изменен.
Допустим зарегистрированы ресиверы R1, R2, R3, R4. Сначала R1 получает
resultCode = -1. R1 вызывает метод setResultCode(1). R2 получает resultCode = 1 и не изменяет его. R3 тоже получает resultCode = 1 и вызывает метод setResultCode(3). R4 получает resultCode = 3.