Próbuję uruchomić a BroadcastReceiver
w Service
. To, co próbuję zrobić, to mieć uruchomione tło, service
które zbiera przychodzące wiadomości tekstowe i rejestruje przychodzące połączenia telefoniczne. Pomyślałem, że najlepszym sposobem, aby to osiągnąć, jest service
bieganie, które zawiera odbiornik telewizyjny, który może również katalogować.
Jak mam to zrobić? Mam już uruchomioną usługę.
android
sms
broadcastreceiver
android-service
Utopia025
źródło
źródło
Lepszym sposobem jest stworzenie samodzielnego
BroadcastReceiver
. Zapewnia to, że Twoja aplikacja może odpowiedzieć na transmisję, niezależnie od tego, czyService
jest uruchomiona. W rzeczywistości użycie tego wzorca możeService
całkowicie wyeliminować potrzebę ciągłego działania .Zarejestruj się
BroadcastReceiver
w swoim Manifeście i utwórz dla niego oddzielną klasę / plik.Na przykład:
<receiver android:name=".FooReceiver" > <intent-filter > <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>
Kiedy odbiornik działa, po prostu przekazujesz
Intent
(Bundle
) doService
i odpowiadasz na toonStartCommand()
.Na przykład:
public class FooReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // do your work quickly! // then call context.startService(); } }
źródło
Service
jeśli jeszcze nie była uruchomiona, lub przekazałaby nową,Intent
jeśli tak jest (do pobraniaonStartCommand
). Jeśli chcesz, aby działał tylko wtedy, gdyService
jest aktywny, możesz programowo włączyć / wyłączyćReceiver
komponent za pomocąPackageManager
plikusetComponentEnabledSetting()
.Receiver
żywego tylko wtedy, gdyService
biegnie.