gathowan
gathowan

Reputation: 9

How to set Scheduled alarms in kotlin?

I'm new to coding and I am working on an application that makes an alarms at a certain date and time beforehand, but I started one alarm but it does not work

I will be more thankful, if you could help me on how to Solve the problem

this MainActivity:

    override fun onCreate(savedInstanceState: Bundle?) {


    super.onCreate(savedInstanceState)    
    setContentView(R.layout.activity_main)   
    var alarmMgr: AlarmManager? = null
    lateinit var alarmIntent: PendingIntent

    alarmMgr = getSystemService(Context.ALARM_SERVICE) as AlarmManager
    alarmIntent = Intent(this, myBroadcastReceiver::class.java).let { intent ->
        PendingIntent.getBroadcast(this, 0, intent, 0)
    }


    val calendar: Calendar = Calendar.getInstance().apply {


        timeInMillis = System.currentTimeMillis()

        set(Calendar.HOUR_OF_DAY, 5)

        set(Calendar.MINUTE, 12)
    }


    alarmMgr?.setRepeating(
        AlarmManager.RTC_WAKEUP,
        calendar.timeInMillis,
        1000 * 60 * 20,
        alarmIntent
    )
    alarmMgr?.cancel(alarmIntent)

       val receiver = ComponentName(this,      myBroadcastReceiver::class.java)

    this.packageManager.setComponentEnabledSetting(
        receiver,
        PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
        PackageManager.DONT_KILL_APP
    )

this myBroadcastReceiver:

    override fun onReceive(p0: Context?, p1: Intent?) {

    if (p1!!.action.equals("com.tester.alarmmanager")){

        val  Newintent2 = Intent(p0!!,ShowAct::class.java)

        p0!!.startActivity(Newintent2)

    }
}    

in AndroidManifest:

i used 3 uses-permission and receiver

    <uses-permission android:name="android.permission.SET_ALARM" >     </uses-permission>
     <uses-permission  android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
  <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"></uses-permission>

  <receiver
            android:name=".myBroadcastReceiver"
            android:enabled="false"
            >

         <intent-filter>
         <action android:name="com.tester.alarmmanager"></action>

         </intent-filter>
    </receiver>

Upvotes: 0

Views: 955

Answers (1)

Bali
Bali

Reputation: 759

Problem is alarmMgr?.cancel(alarmIntent) you're cancelling alarm right after it's creation.

Upvotes: 2

Related Questions