Реализация напоминаний - Разработка мобильного приложения расчета и учета оплаты коммунальных услуг

Первым делом следует построить уведомление, т. е. описать как оно будет выглядеть, что будет происходить при взаимодействии пользователя с ним. Ниже представлена часть кода из файла "ReminderNotification".

// Создаем переменную типа NotificationManager

NotificationManager manager;

Public void onReceive(Context context, Intent intent) {

// Получаем id напоминания

String id = intent. getAction();

// Проверяем является ли полученный id числом

If (TextUtils. isDigitsOnly(id)) {

// Извлекаем заголовок напоминания и текст

String title = intent. getStringExtra("title");

String text = intent. getStringExtra("text");

// Создаем объект NotificationManager

Manager = (NotificationManager)context. getSystemService(context. NOTIFICATION_SERVICE);

// Указываем какое Activity будет открываться при нажатии на уведомление

Intent i = new Intent(context, Main. class);

PendingIntent pIntent = PendingIntent. getActivity(context, 0, i, 0);

// Строим уведомление

Notification notification = new Notification. Builder(context)

.setContentTitle(title)// Заголовок

.setContentText(text)// Текст

.setSmallIcon(android. R. mipmap. sym_def_app_icon)// Иконка

.setContentIntent(pIntent)// Activity при нажатии

.setPriority(Notification. PRIORITY_DEFAULT)// Приоритет уведомления по умолчанию

// Все настройки уведомления по умолчанию (вибрация, звук и т. д.)

.setDefaults(Notification. DEFAULT_ALL)

.build();// Строим уведомление

//Указываем, что при нажатии на уведомление оно должно удалиться из строки состояния

Notification. flags |= Notification. FLAG_AUTO_CANCEL;

// Вызываем уведомление

Manager. notify(Integer. parseInt(id), notification);}

После того, как уведомление построено, необходимо реализовать вызов этого уведомление в нужное время. Ниже представлена часть кода из файла "BootLoad".

Public void onReceive(Context context, Intent intent) {

// Получаем нашу БД для чтения

SQLiteDatabase db = new DBCourseWork(context).getReadableDatabase();

// Через запрос получаем все уведомления

Cursor c = db. query("reminders", null, null, null, null, null, null);

// Создаем объект AlarmManager, который по истечению указанного времени вызовет уведомление

AlarmManager alarmManager = (AlarmManager)context. getSystemService(context. ALARM_SERVICE);

If (c!= null) {

If (c. moveToFirst()) {

Do {

String id = c. getString(c. getColumnIndex("reminder_id"));

String title = c. getString(c. getColumnIndex("reminder_title"));

String text = c. getString(c. getColumnIndex("reminder_text"));

// Создаем BroadcastReceiver, который сработает при истечении времени (в данном случае это будет уведомление), и заносим в него данные (id, title и text)

Intent i = new Intent(context, ReminderNotification. class);

I. setAction(id);

I. putExtra("title", title);

I. putExtra("text", text);

PendingIntent pendingIntent = PendingIntent. getBroadcast(context, 0, i, PendingIntent. FLAG_CANCEL_CURRENT);

// Создаем наше напоминание, которое сработает независимо от того, находится ли телефон в спящем режиме или нет, в указанную дату и что должно будет вызвано по истечению времени

AlarmManager. set(AlarmManager. RTC_WAKEUP, c. getLong(c. getColumnIndex("reminder_date")), pendingIntent);

} while (c. moveToNext()); }}}

Похожие статьи




Реализация напоминаний - Разработка мобильного приложения расчета и учета оплаты коммунальных услуг

Предыдущая | Следующая