Nano Hash - криптовалюты, майнинг, программирование

Наличие ежечасного/еженедельного/и т. д. напоминания об уведомлении (с помощью AlarmManager?)

Я почти везде смотрел! Я не могу найти никакой помощи, руководств или примеров запуска уведомлений еженедельно, ежечасно или ежемесячно. Я слышал кое-что об использовании AlarmManager, но не могу заставить его работать.

Я не очень много работал с Java (скорее парень с Objective-C), но у меня возникли проблемы с этой системой уведомлений. По сути, я просто хочу иметь кнопку, которая при включении будет уведомлять пользователя каждую неделю о повторном открытии приложения (например). И, конечно же, срабатывать, когда они не хотят получать уведомления каждую неделю, чтобы «открыть приложение». В любом случае, есть идеи? Я выяснил, как получить уведомление в целом, но я не могу заставить его задерживаться или происходить, когда приложение не открыто.

Спасибо!


Ответы:


1
 Calendar calendar = Calendar.getInstance();

    // 8 AM Each day 
    calendar.set(Calendar.HOUR_OF_DAY, 8);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, MyClass.class), PendingIntent.FLAG_UPDATE_CURRENT);
    am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);

Это сработает по тревоге в 8 утра каждый день. Точно так же вы можете установить будильник на любой день, который вам нравится.

ЧТОБЫ ПОЛУЧИТЬ УВЕДОМЛЕНИЕ:

  NotificationManager nm;
  nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);        
  CharSequence from = "VIPUL";
  CharSequence message = "Crazy About Android...";
  PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
    new Intent(), 0);
  Notification notif = new Notification(R.drawable.icon,
    "Crazy About Android...", System.currentTimeMillis());
  notif.setLatestEventInfo(context, from, message, contentIntent);
  nm.notify(1, notif);

Вы должны написать это в действии, которое вы вызываете из диспетчера тревог. Это покажет вам уведомление.

Вы также можете установить ожидающее намерение, которое будет вызываться, когда пользователь нажимает на уведомление.

04.07.2012
  • Может ли это запустить уведомление или просто открыть приложение в 8 утра? 04.07.2012
  • Так нужно ли мне поместить систему уведомлений в другой класс? или он может просто выполнить PendingIntent pi = PendingInt.getService(context,0,new Intent(context, createNotification()), PendingIntent.FLAG_UPDATE_CURRENT);? и я предполагаю, что все это работает в фоновом режиме, даже если приложение закрыто? 04.07.2012
  • Вам нужно поместить код уведомления в класс, который вы вызываете из диспетчера тревог, чтобы при срабатывании тревоги код уведомления выполнялся и отображал уведомление. Поэтому просто поместите код уведомления в метод onCreate класса, который вы вызываете из AlarmManager. 05.07.2012
  • @VipulPurohit, не могли бы вы сказать мне, как мы установим, если мы хотим запустить его в 8 вечера? 07.02.2013
  • @SreedevR: вы можете использовать что-то вроде этого :: setRepeating(int type, Calendar.getInstance().getTimeInMillis()+(#YOUR_TIME_IN_MILLISECONDS#), AlarmManager.INTERVAL_DAY, pi) 07.02.2013
  • если это кому-то поможет, вы можете добавить идентификатор, если хотите больше 1 будильника: PendingIntent contentIntent = PendingIntent.getActivity(context, 0, new Intent(), 0); PendingIntent contentIntent = PendingIntent.getActivity(context, 1, new Intent(), 0); PendingIntent contentIntent = PendingIntent.getActivity(context, 2, new Intent(), 0); 16.11.2013

  • 2

    Действительно, вам нужно взглянуть на класс AlarmManager и особенно на его метод setRepeating(). Это позволяет вам установить интервал для запуска действия. Надеюсь это поможет.

    04.07.2012
  • Я пытался понять, как использовать AlarmManager с предупреждением и на самом деле работать. Я часами гуглю и не могу найти действительно работающее руководство, которое не просто обычный будильник, а работает с уведомлениями. Спасибо за помощь, я посмотрю на метод setRepeating(), но знаете ли вы какие-нибудь туториалы для AlarmManager с уведомлениями? 04.07.2012
  • @SpencerPeriShulem, извините, я не читал никаких руководств, но я знаю, что эта тема правильно описана в серии книг Pro Android, вам следует подумать о том, чтобы приобрести ее себе. 04.07.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..