Reputation: 9
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
Reputation: 759
Problem is alarmMgr?.cancel(alarmIntent)
you're cancelling alarm right after it's creation.
Upvotes: 2