Android AlarmManager example with BroadcastReceiver
1. Create a BroadcastReceiver for receiving the pending intent from AlarmManager.
import android.widget.Toast
import android.content.Intent
import android.content.BroadcastReceiver
import android.content.Context
class MyAlarmReceiver: BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
Toast.makeText(context, "Alarm Triggered", Toast.LENGTH_LONG).show()
}
}
2. Register the above BroadcastReceiver in the manifest file inside the application tag.
3. Creating the alarm manager and starting it in an Activity.
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.app.AlarmManager
import android.content.Context
import android.app.PendingIntent
import android.content.Intent
import kotlinx.android.synthetic.main.activity_main.*
import java.util.*
class MainActivity: AppCompatActivity() {
private val REQUEST_CODE = 100
private lateinit var alarmManager: AlarmManager
private lateinit var pendingIntent: PendingIntent
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
tv_current_time.text = Date().toString()
// Creating the pending intent to send to the BroadcastReceiver
alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
val intent = Intent(this, MyAlarmReceiver::class.java)
pendingIntent = PendingIntent.getBroadcast(this, REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT)
// Setting the specific time for the alarm manager to trigger the intent, in this example, the alarm is set to go off at 23:30, update the time according to your need
val calendar = Calendar.getInstance()
calendar.timeInMillis = System.currentTimeMillis()
calendar.set(Calendar.HOUR_OF_DAY, 23)
calendar.set(Calendar.MINUTE, 30)
// Starts the alarm manager
alarmManager.setRepeating(
AlarmManager.RTC,
calendar.timeInMillis,
AlarmManager.INTERVAL_DAY,
pendingIntent
)
}
override fun onDestroy() {
super.onDestroy()
// Cancels the pendingIntent if it is no longer needed after this activity is destroyed.
alarmManager.cancel(pendingIntent)
}
}
Search within Codexpedia
Custom Search
Search the entire web
Custom Search
Related Posts