import android.app.AlarmManager; //导入方法依赖的package包/类
private void addAlarm(Context context, GregorianCalendar date) {
int notificationId = new TimelessDate(date).hashCode();
Log.d("ALARM", "Scheduling alarm " + notificationId);
PendingIntent p = PendingIntent.getBroadcast(
context,
notificationId,
new Intent(context, AlarmReceiver.class),
PendingIntent.FLAG_UPDATE_CURRENT);
try {
AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
if (manager != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
manager.setAlarmClock(new AlarmManager.AlarmClockInfo(date.getTimeInMillis(), p), p);
} else {
manager.setWindow(AlarmManager.RTC_WAKEUP,
date.getTimeInMillis(),
1,
p);
}
serializeAlarm(context, notificationId);
}
} catch (SecurityException e) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
String errMSG = e.getMessage() + "\n" + sw.toString();
e.printStackTrace();
Activity act = ActivityHelper.getActivity();
if (act != null) {
ErrorDialog.newInstance("ERROR", "Failed to schedule alarm. Did some alarms crash?", errMSG)
.show(act.getFragmentManager(), "ALSECERROR");
}
}
Log.d("ALARM", "Alarm ready for "
+ " " + DateUtilities.GERMAN_STD_STIMEFORMAT.format(date.getTime())
+ DateUtilities.GERMAN_STD_SDATEFORMAT.format(date.getTime()));
}