android 系统级闹铃,Android 设置系统闹铃和日历
釋放雙眼,帶上耳機,聽聽看~!
一、創建定時器
設置權限
案例
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);
}
}
可重復鬧鈴
EXTRA_DAYS
一個 ArrayList,其中包括應重復觸發該鬧鈴的每個周日。 每一天都必須使用 Calendar 類中的某個整型值(如 MONDAY)進行聲明。
對于一次性鬧鈴,無需指定此 extra。
參考
https://developer.android.google.cn/guide/components/intents-common.html?hl=zh-cn#Clock
創建系統定時器
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);
}
}
二、添加日歷事件
添加權限
添加日歷事件
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);
}
}
三、通過ContentProvider設置日歷
uri matcher
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";
插入
/**
* 增加日歷提醒事件
* @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;
}
總結
以上是生活随笔為你收集整理的android 系统级闹铃,Android 设置系统闹铃和日历的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2019京东秋招面经
- 下一篇: 【转载】Windows 7下使用bcde