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);
}
этого достаточно??
3 ответа
Простой ответ будет НЕТ. Но да, вы можете достичь этого, создав 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>
Да, вы можете заставить 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"/>
В некоторых телефонах только добавление
<action android:name="android.intent.action.Boot_COMPLETED" />
не работает, вы также должны добавить
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
наряду с предыдущим