Saya mencoba memulai BroadcastReceiver
dalam a Service
. Apa yang saya coba lakukan adalah menjalankan latar belakang service
yang mengumpulkan pesan teks masuk, dan mencatat panggilan telepon masuk. Saya pikir cara terbaik untuk melakukannya adalah dengan service
menjalankan yang menggabungkan penerima siaran yang dapat membuat katalog juga.
Bagaimana cara saya melakukan ini? Saya sudah menyiapkan dan menjalankan layanan saya.
android
sms
broadcastreceiver
android-service
Utopia025
sumber
sumber
Pola yang lebih baik adalah dengan membuat standalone
BroadcastReceiver
. Ini memastikan bahwa aplikasi Anda dapat merespons siaran, baikService
sedang berjalan atau tidak . Faktanya, menggunakan pola ini dapat menghilangkan kebutuhan untuk menjalankan secara konstanService
sama sekali.Daftarkan
BroadcastReceiver
dalam Manifes Anda, dan buat kelas / file terpisah untuk itu.Misalnya:
<receiver android:name=".FooReceiver" > <intent-filter > <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>
Saat penerima berjalan, Anda cukup meneruskan
Intent
(Bundle
) keService
, dan menanggapinya dionStartCommand()
.Misalnya:
public class FooReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // do your work quickly! // then call context.startService(); } }
sumber
Service
jika belum berjalan, atau meneruskan yang baruIntent
jika sudah (untuk pengambilanonStartCommand
). Jika Anda hanya ingin menjalankannya saatService
siaran langsung, Anda dapat mengaktifkan / menonaktifkanReceiver
komponen secara terprogram melaluiPackageManager
ssetComponentEnabledSetting()
.Receiver
hidup saatService
sedang berjalan.