Я пытаюсь запустить BroadcastReceiver
в Service
. Я пытаюсь создать фоновый фон, service
который собирает входящие текстовые сообщения и регистрирует входящие телефонные звонки. Я подумал, что лучший способ сделать это - service
запустить систему, включающую широковещательный приемник, который также может каталогизировать.
Как мне это сделать? Моя служба уже запущена и работает.
android
sms
broadcastreceiver
android-service
Утопия025
источник
источник
Лучше всего создать автономный
BroadcastReceiver
. Это гарантирует, что ваше приложение сможет ответить на широковещательную рассылку независимо от тогоService
, запущена она или нет . Фактически, использование этого шаблона может полностью избавить от необходимости постоянно работатьService
.Зарегистрируйте
BroadcastReceiver
в своем манифесте и создайте для него отдельный класс / файл.Например:
<receiver android:name=".FooReceiver" > <intent-filter > <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>
Когда получатель работает, вы просто передаете
Intent
(Bundle
)Service
объекту и отвечаете на негоonStartCommand()
.Например:
public class FooReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // do your work quickly! // then call context.startService(); } }
источник
Service
если он еще не запущен, или передаст новый,Intent
если он есть (для извлеченияonStartCommand
). Если вы хотите, чтобы он запускался только тогда, когдаService
он активен, вы можете программно включить / отключитьReceiver
компонент с помощьюPackageManager
файловsetComponentEnabledSetting()
.Receiver
живой, когдаService
он работает.