Как настроить BroadcastReceiver в приложении на Android 13, чтобы он продолжал работать независимо от того, на переднем ли плане находится приложение или нет?
Для того чтобы BroadcastReceiver продолжал работать независимо от того, находится ли приложение на переднем плане или нет, можно использовать так называемые "зарегистрированные в манифесте" BroadcastReceivers.
Для настройки BroadcastReceiver в манифесте приложения, необходимо добавить соответствующий элемент <receiver> в файл AndroidManifest.xml. Например:
```xml
<receiver android:name=".MyBroadcastReceiver" android:enabled="true" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
```
Здесь установлен фильтр на действие BOOT_COMPLETED, что означает, что приложение будет получать уведомление после завершения загрузки устройства.
Таким образом, BroadcastReciever будет активироваться даже когда приложение закрыто или находится в фоновом режиме.
Не забудьте добавить разрешение в манифесте для данного действия:
```xml
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
```
После настройки BroadcastReceiver в манифесте, он будет работать независимо от активности приложения.
Начиная с 12го закручивают гайки в плане безопасности. Смс не моя тема, но краем глаза видел упоминание, что есть новый функционал. Получить доступ к коду активации из смс. Почитайте. Может подписку на получение всех и оставили..
По аналогии с другими что нибудь типа Foreground_sms_...
Точно не помню какие там нюансы с BroadcastReceiver, давно этот вопрос изучал. По памяти - там его можно заставить работать, но только по моему если устройство активно и экран включен. Для этого надо в манифесте написать
<uses-permission android:name="android.permission.QUICKBOOT_POWERON" /> <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
и соответствующие системные разрешения запросить и получить.
Иной способ это использовать какой то шедулер для того, чтобы периодически запускать сервис и проверять нужное состояние: WorkManager, JobScheduler или AlarmManager