Пишу небольшое приложение для регистрации исходящих звонков.Он основан на намерении вещания ACTION_NEW_OUTGOING_CALL.У меня есть получатель, зарегистрированный в манифесте, и он работает нормально, когда мой процесс приложения жив.Однако, если я перезагружаю устройство или процесс был убит в фоновом режиме и без перезапуска процесса, приемник не работает.
Приложение запросило необходимые разрешения:
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
И все они предоставлены.
И получатель зарегистрирован следующим образом:
<receiver android:name=".OutgoingCallReceiver" >
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
Я также проверил, что ACTION_NEW_OUTGOING_CALL находится в списке "Неявные широковещательные исключения" , что означает, что зарегистрированный получатель манифеста все еще может быть вызван.Однако, хотя он работает нормально, когда я запускаю процесс приложения, получатель не может быть вызван, если процесс приложения не активен.
Я видел подобный вопрос здесь , но это не мойcase.
Начиная с Android Pie, система становится очень агрессивной в уничтожении фоновых процессов.Особенно на телефоне Google Pixel3, почти все сторонние приложения убиваются, когда вы переключаетесь на приложение камеры и возвращаетесь обратно.
Я знаю, что есть способы сохранить ваш процесс в фоновом режиме, но я не хочу этого.Мне просто нужна чистая реализация с использованием этого широковещательного приемника.
Любая идея приветствуется.