Я разрабатываю приложение, которое должно запускать некоторый код (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+?