Запуск службы исходящих звонков в Орео

Я разрабатываю приложение, которое должно запускать некоторый код (Open Activity) всякий раз, когда выполняется звонок на определенный номер. В API 24 и ниже это нормально, я регистрирую неявный получатель в файле Manifest и запускаю свой сервис в указанном классе, который расширил BroadcastReceiver. Однако в API 26 вы не можете зарегистрировать android.provider.Telephony.OUTGOING_CALL в получателе, так как он не будет работать.

Из документации Android:

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

Я прочитал несколько статей, подобных этой, https://medium.com/@benexus/background-services-in-android-o-862121d96c95 на среде. Есть такие решения, как JobScheduler или же Explicit ReceiverТем не менее, первый используется для изменений в состоянии сети, и я не смог найти способ вызвать задание на событие OUTGOING_CALL, а второй действителен до тех пор, пока ваша деятельность не будет запущена.

Из-за характера моего приложения мне нужно прослушивать исходящие вызовы, независимо от того, запущено приложение или нет. Как это сделать в API 26+?

1 ответ

Решение

Обратите внимание, здесь https://developer.android.com/guide/components/broadcast-exceptions что ACTION_NEW_OUTGOING_CALL освобожден от упомянутых вами ограничений Oreo.

Если у вас есть код, который вы пробовали, но он не работает, вы должны опубликовать его.

Другие вопросы по тегам