Alarm Manager сохраняется даже после перезагрузки?

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

Вот мой код:

public void schedAlarm() {
    AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
    Intent intent = new Intent(this, AlarmService.class);
    pendingIntent = PendingIntent.getBroadcast(this, contact.id, intent, PendingIntent.FLAG_ONE_SHOT);
    am.setRepeating(AlarmManager.RTC, timetoAlarm, nextalarm, pendingIntent);
}

Я сделал этот BroadcastRecever вместо AlarmSerivce Вот :

public void onReceive(Context context, Intent intent) {
    nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    CharSequence from = "It Birthday!";
    CharSequence message =" Greet your friend.";
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, new Intent(), 0);
    Notification notif = new Notification(R.drawable.ic_launcher, "Birthday", System.currentTimeMillis());
    notif.setLatestEventInfo(context, from, message, contentIntent);
    nm.notify(1, notif);
 }

этого достаточно??

 Madhav_nimavat17 дек. 2016 г., 11:07
Я также столкнулся с той же проблемой, пожалуйста, помогите мне stackoverflow.com/questions/41197416/alarmmanager-not-working-after-phone-reboot
 Ferhat Aslan29 окт. 2015 г., 00:08
@ Люцифер, пожалуйста, помогите мне в моей проблеме, то же самое :)stackoverflow.com/questions/33374293/…

Ответы на вопрос(3)

вы можете заставить AlarmManager работать даже после перезагрузки. Возможно, это самый простой способ: добавьте приведенный ниже код в ваш AndroidManifest.xml:

<receiver android:name=".AlarmReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="android.intent.action.QUICKBOOT_POWERON" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>

не забудьте включить разрешение пользователя в AndroidManifest.xml как:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
 11 окт. 2018 г., 04:56
он срабатывает автоматически сразу после перезагрузки, даже если будильник установлен через час.
 11 окт. 2018 г., 06:41
Да, как правило, это будет называться послеPendingIntent который бы назвал.AlarmReceiver после определенного периода времени. ДобавляяBOOT_COMPLETED а такжеQUICKBOOT_POWERON, В ответе выше.AlarmReceiver вызывается при загрузке (неправильное действие), аPendingIntent все еще теряется после загрузки. Вместо этого должен быть вызван дополнительный получательBOOT_COMPLETED а такжеQUICKBOOT_POWERON который повторно инициализируетPendingIntent
Решение Вопроса

NO, Но да, вы можете достичь этого, создавBroadCastReceiver который запустит Тревогу во время загрузки устройства.

использование<action android:name="android.intent.action.BOOT_COMPLETED" /> для захвата активности загрузки в классе BroadCastReceiver.

Вам нужно добавить вышеуказанную строку в AndroidManifest.xml следующим образом:

<receiver android:name=".AutoStartUp" android:enabled="true" android:exported="false" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
     <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
    </receiver>
 28 янв. 2016 г., 08:47
Нужно ли мне «перерегистрировать»? все мои тревоги снова в этом приемнике после того, как я получаю событие загрузки?
 20 авг. 2012 г., 10:30
Я не знаю код вашего файла AlarmService, поэтому не могу сказать,yes, но я предлагаю вам создать новый, так что если что-то пойдет не так, у вас есть хотя бы ваша предыдущая работа готова :)
 31 янв. 2014 г., 19:25
Обратите внимание, что вам также необходимо запросить разрешение RECEIVE_BOOT_COMPLETED в своем манифесте.
 Xelamae20 авг. 2012 г., 10:29
Могу ли я просто изменить AlarmService в BroadCastRecever?
 Xelamae20 авг. 2012 г., 10:50
Я разместил получатель.

<action android:name="android.intent.action.Boot_COMPLETED" />

не работает, вы также должны добавить

<action android:name="android.intent.action.QUICKBOOT_POWERON" />

наряду с предыдущим

 15 янв. 2019 г., 18:13

Ваш ответ на вопрос