У меня есть класс унаследованный от BroadcastReceiver, в нем создаются напоминания, так же у меня есть активити которое создает и сохраняет список времени от и до в виде строки, как мне сделать так что бы напоминания не срабатывали(откладывались) в эти промежутки времени? Проблема в том, что бы передать эту строку в класс BroadcastReceiver, т.к. приложение не активно, то надо загрузить эту сроку не из активности. Для сохранения использую SharedPreferences. Может использовать сериаллизацию? Но тогда куда сохранять фаил? и такое решение мне не очень нравится. В классе BroadcastReceiver пока не писал реализацию обработки нужной строки.
public class Alarm extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent notificationIntent = new Intent(context, MainActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(context,
0, notificationIntent,
PendingIntent.FLAG_CANCEL_CURRENT);
Resources res = context.getResources();
Notification.Builder builder = new Notification.Builder(context);
builder.setContentIntent(contentIntent)
.setSmallIcon(R.drawable.u)
// большая картинка
.setLargeIcon(BitmapFactory.decodeResource(res, R.drawable.w))
//.setTicker(res.getString(R.string.warning)) // текст в строке состояния
.setTicker("Последнее китайское предупреждение!")
.setWhen(System.currentTimeMillis())
.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_ALL)
//.setContentTitle(res.getString(R.string.notifytitle)) // Заголовок уведомления
.setContentTitle("Напоминание")
//.setContentText(res.getString(R.string.notifytext))
.setContentText("У вас есть колоды требующие повторения."); // Текст уведомления
// Notification notification = builder.getNotification(); // до API 16
Notification notification = builder.build();
NotificationManager notificationManager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(1, notification);
ComponentName receiver = new ComponentName(context, Alarm.class);
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
}
public void ssetAlarm(Context context, Date ddr, Date dateBl) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(ddr.getTime());
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, Alarm.class);
intent.putExtra(String.valueOf(dateBl.getTime()), String.valueOf(dateBl.getTime()));//Задаем параметр интента
PendingIntent pi = PendingIntent.getBroadcast(context, (int) dateBl.getTime(), intent, 0);
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pi);
}
public void cancelAlarm(Context context,Date ddr) {
Intent intent = new Intent(context, Alarm.class);
PendingIntent sender = PendingIntent.getBroadcast(context, (int)
ddr.getTime(), intent, 0);
// AlarmManager alarmManager = (AlarmManager)
context.getSystemService(Context.ALARM_SERVICE);
sender.cancel();
// if (alarmManager != null) {
// alarmManager.cancel(sender);
// }
}
}
И подскажи те заодно пожалуйста правильно ли реализован сам механизм этого класса? меня смущает эта часть, может она должна быть в другом месте программы?
ComponentName receiver = new ComponentName(context, Alarm.class);
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
Виртуальный выделенный сервер (VDS) становится отличным выбором
Подскажите, пожалуйста, как сделать, чтобы в Slick слайдере, при клике на любой слайд, в том числе и даже первый, делалось перелистывания сладейдеровПотому...
Есть проблема с блокировкой Google Tag Manager плагинами adguard и adblock plus в Chrome на сайте https://subexample