Je suis vraiment nouveau sur Android, j'ai fait des recherches sur les alarmes. Je veux alarmer s'il y a un anniversaire ce jour-là. J'ai utilisé le gestionnaire d'alarmes. J'étais confus parce que j'ai lu qu'il s'efface après le redémarrage. Je n'ai pas de téléphone Android Android donc j'utilise juste l'émulateur.
Voici mon code:
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);
}
J'ai fait ce BroadcastRecever en remplacement d'AlarmSerivce ici:
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);
}
est-ce assez??
Une réponse simple serait NON . Mais oui, vous pouvez y parvenir en créant un BroadCastReceiver
qui lancera l'alarme pendant le démarrage de l'appareil.
Utilisation <action Android:name="Android.intent.action.BOOT_COMPLETED" />
pour intercepter l'activité de démarrage dans la classe BroadCastReceiver.
Vous devez ajouter la ligne ci-dessus dans AndroidManifest.xml comme suit,
<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>
Oui, vous pouvez faire fonctionner AlarmManager même après le redémarrage. C'est peut-être le moyen le plus simple: ajoutez le code ci-dessous dans votre 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>
n'oubliez pas d'inclure la permission de l'utilisateur dans AndroidManifest.xml comme:
<uses-permission Android:name="Android.permission.RECEIVE_BOOT_COMPLETED"/>
dans certains téléphones en ajoutant seulement
<action Android:name="Android.intent.action.Boot_COMPLETED" />
ne fonctionne pas, vous devez également ajouter
<action Android:name="Android.intent.action.QUICKBOOT_POWERON" />
avec le précédent