I am doing alarm Project,
I want to set one time alarm.. But i am facing problem to set 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 push is enabled always, when the app is opened...
Wat mistake did i do in my code.. plz help me to set the one time alarm
Thanks in advance
Open the Clock app then select the Alarm tab from the bottom of the screen. At the top of the main panel you should see an option to Add alarm.
You need to use setAlarm()
method instead of setRepeating()
alarmManager.set(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(),pendingIntent);
How about that I'm using
alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);
and I want to push notification in future by alarmMenager It works while app is still running, while I call allarm menager to set notify in futer and close app my notification didn't show. WHat i have to do ?
here u got my event sender:
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 Reciever:
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);
Whats wrong with that to push notification in the future while app is close ?
Instead of using alarmManager.setRepeating use alarmManager.set to set one time alarm
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With