тревога не срабатывает, когда приложение не запущено

#android #broadcastreceiver #alarm

#Android #broadcastreceiver #тревога

Вопрос:

Я настраиваю ежедневный будильник. Это работает, если приложение запущено во время будильника, но не работает, если приложение не запущено. Вот как я объявляю получателя в манифесте:

 <receiver android:name="com.myAppPackage.alarm.AlarmReceiver"
        android:enabled="true"
        android:exported="true"/>
  

Studio предупреждает меня: экспортированный приемник не требует разрешения.

Правда, я не добавил android: permission nor и Intent к получателю, и в разделе приложения нет никаких тегов разрешений.

И это broadcastreceiver:

     package com.myAppPackage.alarm;

    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;

    import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;

    public class AlarmReceiver extends BroadcastReceiver {

    public AlarmReceiver(){}

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

        final Intent syncIntent = new Intent(context, AlarmActivity.class);

        syncIntent.addFlags(FLAG_ACTIVITY_NEW_TASK);

        context.startActivity(syncIntent);

    }
}
  

Тревога настраивается следующим способом (в этом примере настроен на ежедневное неточное отключение в 13:48):

 public static void configureDailySync(Context context) {

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

    Intent alarmIntent = new Intent(context, AlarmReceiver.class);

    PendingIntent alarmPendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, 0);

    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());

    final int hourOfDay = 13;
    final int minuteOfHour = 48;

    calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
    calendar.set(Calendar.MINUTE, minuteOfHour);

    alarmManager.setInexactRepeating(
            AlarmManager.RTC_WAKEUP,
            calendar.getTimeInMillis(),
            AlarmManager.INTERVAL_DAY,
            alarmPendingIntent);
}
  

Любая помощь приветствуется! Спасибо!!

новости: все ближе… если я скопирую код настройки будильника в метод MainActivity onCreate(), это сработает! Это код, который я скопировал:

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

    Intent alarmIntent = new Intent(this, AlarmReceiver.class);

    PendingIntent alarmPendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0);

    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());

    final int hourOfDay = 13;
    final int minuteOfHour = 48;

    calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
    calendar.set(Calendar.MINUTE, minuteOfHour);

    alarmManager.setInexactRepeating(
            AlarmManager.RTC_WAKEUP,
            calendar.getTimeInMillis(),
            AlarmManager.INTERVAL_DAY,
            alarmPendingIntent);
  

Когда тревога создается, как указано выше, в onCreate() MainActivity, она срабатывает, даже когда приложение закрыто…
Но когда я вызываю вызов метода из MainActivity следующим образом:

 MyAppAccount.configureDailySync(this);
  

это не работает!
MyAppAccount — это простой класс, который ничего не расширяет… Я пытался заставить MyAppAccount расширить AppCompatActivity на случай, если это имело значение, но ничего…
Ну что ж … похоже, что приведенная выше попытка выполнить настройку будильника в методе onCreate() MainActivity не всегда работает… что больше всего озадачивает !!! :- (

Комментарии:

1. вы пробовали, что происходит, когда вы помещаете configureDailySync() в класс приложения?

Ответ №1:

РЕШАЕМАЯ: Это не имело никакого отношения к кодированию!! Проблема заключалась в том, как я закрывал приложение. При закрытии приложения с помощью кнопки остановки Android Studio тревога НЕ устанавливается. При закрытии приложения с телефона, например, с помощью кнопки «Назад» и / или удалении приложения из списка приложений (с помощью квадратной кнопки), тогда срабатывает будильник!

Почему? Понятия не имею…

Комментарии:

1. 5 часов поиска. СПАСИБО, ЧУВАК