android - ejemplo - ¿persiste Alarm Manager incluso después de reiniciar?
alarmmanager android ejemplo (3)
Sí, puede hacer que AlarmManager funcione incluso después de reiniciar. Quizás esta sea la forma más fácil: agregue el siguiente código en su 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>
no se olvide de incluir permisos de usuario para AndroidManifest.xml como:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
Soy realmente nuevo en Android, he estado investigando sobre alarmas. Quiero alarmar si hay un cumpleaños en ese día. He usado el administrador de alarmas Estaba confundido porque he leído que se borra después de reiniciar. No tengo un teléfono Android, así que solo estoy usando el emulador.
Aquí está mi código:
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);
}
Hice este BroadcastRecever en reemplazo de AlarmSerivce aquí:
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);
}
¿¿es suficiente??
Una respuesta simple sería NO . Pero sí, puede lograrlo creando un BroadCastReceiver
que iniciará la alarma mientras se inicia el arranque del dispositivo.
Utilice <action android:name="android.intent.action.BOOT_COMPLETED" />
para interceptar la actividad de arranque en la clase BroadCastReceiver.
Debe agregar la línea superior en AndroidManifest.xml de la siguiente manera,
<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>
en algunos teléfonos solo agregando
<action android:name="android.intent.action.Boot_COMPLETED" />
no funciona, también tienes que agregar
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
junto con uno anterior