Sobes.tech
Назад к вопросам
Junior — Middle
72

Каким образом реализовать прием и обработку широковещательных сообщений в Android-приложении?

Компании, где спрашивали
МТС ЛинкМТС Линк

Ответ от нейросети

sobes.tech AI

Для приема и обработки широковещательных сообщений (broadcasts) в Android-приложении используется класс BroadcastReceiver.

Основные шаги:

  1. Создать класс, наследующий BroadcastReceiver, и переопределить метод onReceive(Context context, Intent intent).
  2. Зарегистрировать ресивер:
    • Статически — в манифесте (AndroidManifest.xml) с указанием фильтра интентов (<intent-filter>).
    • Динамически — в коде с помощью registerReceiver() и указанием фильтра.

Пример динамической регистрации:

public class MyReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Обработка сообщения
        String action = intent.getAction();
        if ("android.net.conn.CONNECTIVITY_CHANGE".equals(action)) {
            // Реагируем на изменение подключения
        }
    }
}

// В Activity или Service
MyReceiver receiver = new MyReceiver();
IntentFilter filter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
registerReceiver(receiver, filter);

// Не забыть отписаться
unregisterReceiver(receiver);

Важно учитывать, что начиная с Android 8.0 (API 26) многие широковещательные сообщения нельзя принимать через статическую регистрацию в манифесте, рекомендуется использовать динамическую регистрацию.

Таким образом, прием широковещательных сообщений реализуется через BroadcastReceiver и регистрацию соответствующих фильтров.