Автоматическое уведомление в определенное время - PullRequest
0 голосов
/ 04 декабря 2018

То, что я пытаюсь сделать, это иметь уведомление, которое будет срабатывать в одно и то же время каждый день.Я хотел бы быть максимально простым, поскольку я все еще начинающий.

Вот мой MainActivity:

private static final int notificationId = 4242;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initChannels(this);

    // Create an explicit intent for an Activity in your app
    Intent intent = new Intent(this, MainActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this, "default")
            .setSmallIcon(R.drawable.ic_launcher_foreground)
            .setContentTitle("This is the title")
            .setContentText("This is the body of the notification.")
            .setPriority(NotificationCompat.PRIORITY_DEFAULT)
            // Set the intent that will fire when the user taps the notification
            .setContentIntent(pendingIntent)
            .setAutoCancel(true);

    NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);

    // notificationId is a unique int for each notification that you must define
    notificationManager.notify(notificationId, mBuilder.build());
}

public void initChannels(Context context) {
    if (Build.VERSION.SDK_INT < 26) {
        return;
    }
    NotificationManager notificationManager =
            (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    NotificationChannel channel = new NotificationChannel("default",
            "Channel name",
            NotificationManager.IMPORTANCE_DEFAULT);
    channel.setDescription("Channel description");
    notificationManager.createNotificationChannel(channel);
}

То, что в настоящее время делает мой код, абсолютно ничего.Я считаю, что код должен отправить уведомление, когда я запускаю приложение, но этого тоже не происходит.Я думаю, что первым шагом было бы, по крайней мере, заставить уведомление работать.А затем установите его для работы в определенное время (скажем, в 9 утра).

РЕДАКТИРОВАТЬ: Код был исправлен, чтобы заставить его работать по крайней мере.Теперь, когда я вхожу в приложение, я получаю уведомление, как и планировалось изначально.Вторая часть моего вопроса заключается в том, как заставить его работать в одно и то же время каждый день?

1 Ответ

0 голосов
/ 04 декабря 2018

Вы можете сделать это с помощью Alarm Manager

Однако, чтобы уменьшить расход батареи, Alarm Manager не выдает сигнал тревоги в точное время, и эта политика отличаетсяПлатформа Android.

Более подробную информацию о Alarm Manager можно найти Здесь

Начиная с API 19 (Build.VERSION_CODES.KITKAT), доставка сигналов тревоги неточна:ОС будет сдвигать сигналы тревоги, чтобы минимизировать пробуждения и использование батареи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...