Установка будильника 8 часов в каждый день через android не работает - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь установить Alarm 8am каждый день для выполнения mainActivity, так что это моя MainActivity:

   protected void onCreate(Bundle savedInstanceState){
      Intent Alarm = new Intent(MainActivity.this,LongRunningService.class);
      startService(Alarm);
   }

LongRunningService - Сервис:

   AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);
   Calendar calendar = Calendar.getInstance();
   calendar.setTimeInMillis(System.currentTimeMillis());
   calendar.set(Calendar.HOUR_OF_DAY, 8);   
   calendar.set(Calendar.MINUTE, 00);   

   Intent i = new Intent(this,AlarmReceiver.class);
   intent.setAction("startAlarm");
   PendingIntent pi = PendingIntent.getBroadcast(this,0,i,0);
   manager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY, pi);

AlarmReceiver. java

   public void onReceive(Context context, Intent intent){
     if ("startAlarm".equals(intent.getAction()))
         Log.d(TAG, "onReceive! ");  //not working?
    }
   Log.d(TAG, "onReceive! ");  //it's working

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Я знаю, что произойдет,

    Intent i = new Intent(this,AlarmReceiver.class);
    intent.setAction("startAlarm");  //wrong

    i.setAction("startAlarm");   //correct
0 голосов
/ 09 марта 2020

Источник: какие разрешения необходимы приложению android для использования службы диспетчера аварийных сигналов?

Процессор запускается каждые 10 минут до выключения телефона.

<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
<receiver  android:process=":remote" android:name="Alarm"></receiver>

Если вы хотите установить повтор сигнала тревоги во время загрузки телефона:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED">

...

Для более подробной информации: Пример диспетчера тревог

в соответствии с android документацией, вы должны использовать разрешение SET_ALARM

Документация

Позволяет приложению передавать намерение установить будильник для пользователя.

...