Android set system alarm and calendar

1. Create a timer
 

Setting permissions

<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />

case

https://developer.android.com/reference/android/provider/AlarmClock.html#EXTRA_MESSAGE

public void createAlarm(String message, int hour, int minutes) {
    Intent intent = new Intent(AlarmClock.ACTION_SET_ALARM)
            .putExtra(AlarmClock.EXTRA_MESSAGE, message)
            .putExtra(AlarmClock.EXTRA_HOUR, hour)
            .putExtra(AlarmClock.EXTRA_MINUTES, minutes);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

repeatable alarm

EXTRA_DAYS
一个 ArrayList,其中包括应重复触发该闹铃的每个周日。 每一天都必须使用 Calendar 类中的某个整型值(如 MONDAY)进行声明。
对于一次性闹铃,无需指定此 extra。

refer to

https://developer.android.google.cn/guide/components/intents-common.html?hl=zh-cn#Clock

Create a system timer

public void startTimer(String message, int seconds) {
    Intent intent = new Intent(AlarmClock.ACTION_SET_TIMER)
            .putExtra(AlarmClock.EXTRA_MESSAGE, message)
            .putExtra(AlarmClock.EXTRA_LENGTH, seconds)
            .putExtra(AlarmClock.EXTRA_SKIP_UI, true);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

2. Add calendar events

Add permission

<uses-permission android:name="android.permission.READ_CALENDAR" /> 

<uses-permission android:name="android.permission.WRITE_CALENDAR" />

Add a calendar event

https://developer.android.com/reference/android/provider/AlarmClock.html#EXTRA_MESSAGE

public void addEvent(String title, String location, Calendar begin, Calendar end) {
            Intent intent = new Intent(Intent.ACTION_INSERT)
            .setData(Events.CONTENT_URI)
            .putExtra(Events.TITLE, title)
            .putExtra(Events.EVENT_LOCATION, location)
            .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, begin)
            .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, end);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

 

3. Set the calendar through ContentProvider

uri matches

private static String CALANDER_URL = "content://com.android.calendar/calendars"; 

private static String CALANDER_EVENT_URL = "content://com.android.calendar/events"; 

private static String CALANDER_REMIDER_URL = "content://com.android.calendar/reminders";

insert

/**
     * 增加日历提醒事件
     * @param activity
     * @param dataEntity
     * @param isRecord
     * @return
     */
    public static boolean addCalendarReminder(Activity activity,DataEntity dataEntity, boolean isRecord) {
    
       
        if (!AactivityCompat.hasPermissions(activity, Manifest.permission.WRITE_CALENDAR, Manifest.permission.READ_CALENDAR)) {
            return false;
        }
  

        try {
        
//        Calendar startCalendar = Calendar.getInstance();
//        long startTime = startCalendar.getTimeInMillis() + 8 * 60 * 1000;
            long startTime = dataEntity.getRemind_time();
//        Calendar endCalendar = Calendar.getInstance();
//        long endTime = endCalendar.getTimeInMillis() + 50 * 60 * 1000;
            long endTime = startTime + 10 * 60 * 1000;
            String remindTitle = dataEntity.getTitle();

            // 日历事件
            ContentValues calEvent = new ContentValues();
            calEvent.put(CalendarContract.Events.CALENDAR_ID, 1); // XXX pick)
            calEvent.put(CalendarContract.Events.TITLE, remindTitle);
            calEvent.put(CalendarContract.Events.DTSTART, startTime);
            calEvent.put(CalendarContract.Events.DTEND, endTime);
            calEvent.put(CalendarContract.Events.HAS_ALARM, 1);
            calEvent.put(CalendarContract.Events.EVENT_TIMEZONE, CalendarContract.Calendars.CALENDAR_TIME_ZONE);

            ContentResolver cr = activity.getContentResolver();
            if (null == cr) {
                return false;
            }
            try {
                Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, calEvent);
                if (null == uri) {
                    return false;
                }
                int eventId = Integer.parseInt(uri.getLastPathSegment());

                /** 记录code 记录eventId **/
                if (isRecord) {
                    saveEventCode(dataEntity.getProduct_code());
                    saveEventId(eventId);
                }

                // 日历提醒
                ContentValues reminders = new ContentValues();
                reminders.put(CalendarContract.Reminders.EVENT_ID, eventId);
                reminders.put(CalendarContract.Reminders.METHOD, CalendarContract.Reminders.METHOD_ALERT);
                reminders.put(CalendarContract.Reminders.MINUTES, REMIND_MINUTES);
                cr.insert(CalendarContract.Reminders.CONTENT_URI, reminders);

                return true;
            } catch (SecurityException ignore) {}
        } catch (Exception ignore) {}

        return false;
    }

Reference: http://blog.csdn.net/zhaoshuyu111/article/details/53195142

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325107067&siteId=291194637