How to set a one-time alarm in android

I'm making an alarm

I want to set a one-time alarm. But I ran into the problem of installing tat,

My code is:

public void loadCalender(String month) { try { Cursor cursor = null; Database db = new Database(getApplicationContext()); cursor = db.getSelectedCalenderDetails(month); if (cursor.getCount() != 0) { if (cursor.moveToFirst()) { do { String text = cursor.getString(cursor .getColumnIndex("event")); String title = "News/Events"; String dates = cursor.getString(cursor .getColumnIndex("date")); String yr = dates.substring(0, 4); int year = Integer.parseInt(yr); String mon = dates.substring(5); String mo = mon.substring(0, 2); int months = Integer.parseInt(mo); String da = dates.substring(9); int day = Integer.parseInt(da); // Ask our service to set an alarm for that date, // this // activity talks to the client that talks to the // service set_alarm(year, months, day, title, text); System.out.println(dates); } while (cursor.moveToNext()); } } cursor.close(); } catch (Exception e) { e.printStackTrace(); } // looping through All Contacts } public void set_alarm(int year, int month, int day, String title, String text) { SharedPreferences prefs = PreferenceManager .getDefaultSharedPreferences(getApplicationContext()); // etc Calendar cal = Calendar.getInstance(); int hour = prefs.getInt("PREF_HOUR", 0); int min = prefs.getInt("PREF_MIN", 0); if(hour == 0 && min == 0){ cal.set(Calendar.MONTH, month - 1); cal.set(Calendar.YEAR, year); cal.set(Calendar.DAY_OF_MONTH, 7); cal.set(Calendar.HOUR_OF_DAY, 15); cal.set(Calendar.MINUTE, min); }else { cal.set(Calendar.MONTH, month - 1); cal.set(Calendar.YEAR, year); cal.set(Calendar.DAY_OF_MONTH, hour); cal.set(Calendar.HOUR_OF_DAY, min); cal.set(Calendar.MINUTE, min); } Intent intent = new Intent(getApplicationContext(), AlarmActivity.class); intent.putExtra("title", title); intent.putExtra("text", text); PendingIntent pendingIntent = PendingIntent.getBroadcast( getApplicationContext(), 1, intent, PendingIntent.FLAG_ONE_SHOT); AlarmManager alarmManager = (AlarmManager) getApplicationContext() .getSystemService(getApplicationContext().ALARM_SERVICE); /* * alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), * pendingIntent); */ alarmManager.cancel(pendingIntent); // cancel any existing alarms alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(),AlarmManager.INTERVAL_DAY, pendingIntent); } 

Here the alarm is always activated when the application is open ...

Wat error i made in my code .. plz help me set a one-time alarm

Thank you in advance

+4
source share
3 answers

You need to use the setAlarm() method instead of setRepeating()

 alarmManager.set(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(),pendingIntent); 
+9
source

How about what I use

 alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender); 

and I want to send a notification in the future via alarmMenager. It works while the application is still running, and I call allarm menager to set the notification in the futer and close applications, my notification did not appear. What should I do?

here I have the sender of my event:

 Calendar cal = Calendar.getInstance(); cal.set(Calendar.HOUR, HOUR_OF_DAY); cal.set(Calendar.MINUTE, MINUTE); //cal.add(Calendar.SECOND, SECOND_OF_DAY); Intent intent = new Intent(UnityPlayer.currentActivity, TimeAlarm.class); intent.putExtra("alarm_status", statusMessage); intent.putExtra("alarm_title", title); intent.putExtra("alarm_content", content); Log.i("SenderEvent ", "przygotowane dane"); PendingIntent sender = PendingIntent.getBroadcast(UnityPlayer.currentActivity.getApplicationContext(), REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT); am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender); 

And the receiver:

 Bundle bundle = intent.getExtras(); String statusMessage = bundle.getString("alarm_status"); String title = bundle.getString("alarm_title"); String content = bundle.getString("alarm_content"); nm = (NotificationManager) context .getSystemService(Context.NOTIFICATION_SERVICE); PendingIntent contentIntent = PendingIntent.getActivity(context, 0, new Intent(), 0); Notification notif =new Notification();//R.drawable.ic_launcher,statusMessage, System.currentTimeMillis());; //notif.largeIcon = bitmap; notif.icon =2130837504; notif.tickerText=statusMessage; notif.when= System.currentTimeMillis(); /* new Notification(0, statusMessage, System.currentTimeMillis());*/ notif.setLatestEventInfo(context, title, content, contentIntent); nm.notify(NOTIFY_ME_ID, notif); 

What is wrong with this to push the notification in the future while the application is closed?

+5
source

Instead of using alarmManager.setRepeating, use alarmManager.set to set a one-time alarm

+3
source

All Articles