Yousuf Qureshi
Yousuf Qureshi

Reputation: 498

Google Calendar Entry Alarm not working Android

I need to set alarm in google calendar via Android app. I have successfully entered data in calendar even though it shows alarm has been set too but when I view detail of calendar entry, it automatically remove alarm setting.

please advise, below is code snippet.

private Uri MakeNewCalendarEntry(int calId, String title, String desc,
        String location, String matchDate) {
    ContentValues event = new ContentValues();

    String value = matchDate;
    String[] splitedTimeDate = value.split("T");

    String dateValue = splitedTimeDate[0];
    String[] timeValue = splitedTimeDate[1].split("-");

    matchDate = dateValue + " " + timeValue[0];

    event.put("calendar_id", calId);
    event.put("title", title);
    event.put("description", desc);
    event.put("eventLocation", location);

    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    java.util.Date d = null;
    try {
        d = formatter.parse(matchDate);// catch exception
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    // This is the UTC Event Start Date
    Calendar calUTCEventDate = Calendar.getInstance();
    calUTCEventDate.setTime(d); // rest is the same....

    // This is the current UTC Date
    Calendar calCurrentUTCDate = Calendar.getInstance();

    TimeZone z = calCurrentUTCDate.getTimeZone();
    int offset = z.getRawOffset();
    int offsetHrs = offset / 1000 / 60 / 60;
    int offsetMins = offset / 1000 / 60 % 60;

    calCurrentUTCDate.add(Calendar.HOUR_OF_DAY, (-offsetHrs));
    calCurrentUTCDate.add(Calendar.MINUTE, (-offsetMins));

    // This is the current Device Date
    Calendar calCurrentDeviceDate = Calendar.getInstance();

    long diff = calUTCEventDate.getTimeInMillis()
            - calCurrentUTCDate.getTimeInMillis();
    long minutes = Math.abs(diff) / (1000 * 60);
    long hours = minutes / 60;

    long startTime = System.currentTimeMillis() + 1000 * 60 * 60 * hours;
    long endTime = System.currentTimeMillis() + 1000 * 60 * 60
            * (hours + 8);

    event.put("dtstart", startTime);
    event.put("dtend", endTime);

    event.put("allDay", 0); // 0 for false, 1 for true
    event.put("eventStatus", 1);
    event.put("visibility", 1);
    event.put("transparency", 0);
    event.put("hasAlarm", 1); // 0 for false, 1 for true


    Uri eventsUri = Uri.parse(getCalendarUriBase() + "events");

    Uri insertedUri = getContentResolver().insert(eventsUri, event);
    return insertedUri;
}

Upvotes: 1

Views: 1439

Answers (2)

vll
vll

Reputation: 1

I use GCalendar Widget to view, create, edit and delete Google Calendar events.

http://bstdownload.com/reviews/gcalendar-widget-1/

Upvotes: -2

Yousuf Qureshi
Yousuf Qureshi

Reputation: 498

Below snippet helped me to resolve issue ...

Blockquote // Above code snippet return me event Id

            Uri newEvent = MakeNewCalendarEntry(iTestCalendarID, title,
                    desc, location, matchDate);
            int eventID = Integer.parseInt(newEvent.getLastPathSegment());

Blockquote

            final ContentResolver cr = getContentResolver();
            ContentValues values = new ContentValues();
            values.put("event_id", eventID);
            values.put("method", 1);
            values.put("minutes", 5);
            cr.insert(Uri.parse("content://com.android.calendar/reminders"), values); // for android 2.2+

          // OR 

            cr.insert(Uri.parse("content://calendar/reminders"), values); // for android 2.1 n earlier

thanks

-y

Upvotes: 3

Related Questions