@Wolfak

Как создать уведомление в сервисе Android?

Добрый вечер. Мне нужно создать сервис, который каждые 1-3 минуты проверял бы наличие новых личных сообщений. (приложение-клиент сайта) Написать саму проверку на наличие новых сообщений могу без проблем, но не понимаю как сделать такой сервис и реализовать в нем создание уведомлений.
Перепробовал кучу способов, но все вызывают ошибку, чаще всего связанную с PendingIntent, потому что при нажатии на уведомление нужно сделать переход на новую активность.

Вызываю так, в маинАктивити:
private void restartNotify() {
        AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(this, TimeNotification.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
                intent, PendingIntent.FLAG_CANCEL_CURRENT );
        am.cancel(pendingIntent);
        am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 5000, pendingIntent);
    }


Сам код класса:
public class TimeNotification extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

            PendingIntent contentIntent = PendingIntent.getActivity(context, 0, new Intent(context, mainfeed.class), 0);
            Resources res = context.getResources();
            Notification.Builder builder = new Notification.Builder(context)
                    .setLargeIcon(BitmapFactory.decodeResource(res, R.drawable.mediumico))
                    .setContentTitle("My App")
                    .setContentText("TextAllers")
                    .setContentIntent(contentIntent)
                    .setSmallIcon(R.drawable.mediumico)
                    .setAutoCancel(true);
            NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
            Notification notification = builder.getNotification();
            notificationManager.notify(333, notification);

            AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0,
                    intent, PendingIntent.FLAG_CANCEL_CURRENT);
            am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 180000, pendingIntent);

}


Надеюсь на вашу помощь, нужен простой пример создания уведомлений из сервиса и автоматический запуск сервиса каждые 1-3 минуты. Я потратил на поиски кучу времени, а толку 0. Заранее огромное спасибо.
  • Вопрос задан
  • 1124 просмотра
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Для перезапуска нужно использовать AlarmManager и BroadcastReceiver.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы