Comment puis-je configurer plusieurs alarmes dans Android?
Question
Jusqu'à présent et grâce à ce site Web, j'ai été en mesure de configurer une alarme qui sera configurée et active, même si je tourne de mon téléphone.
Maintenant, j'ai configuré une alarme pour afficher un rappel pour l'événement A et j'ai besoin de l'application pour configurer une autre alarme pour afficher un autre rappel pour l'événement b.
Je dois faire quelque chose de mal, car il ne tire que le rappel de l'événement A. Il semble qu'une fois configuré, toute autre alarme est comprise comme la même.: - (
Voici le détail de ce que je fais en deux étapes:
1) à partir d'une activité, j'ai défini une alarme qu'à un certain temps et la date appellera un récepteur
Intent intent = new Intent(Activity_Reminder.this,
AlarmReceiver_SetOnService.class);
intent.putExtra("item_name", prescription
.getItemName());
intent
.putExtra(
"message",
Activity_Reminder.this
.getString(R.string.notif_text));
intent.putExtra("item_id", itemId);
intent.putExtra("activityToTrigg",
"com.companyName.appName.main.Activity_Reminder");
PendingIntent mAlarmSender;
mAlarmSender = PendingIntent.getBroadcast(
Activity_Reminder.this, 0, intent, 0);
long alarmTime = dateMgmt.getTimeForAlarm(pickedDate);
Calendar c = Calendar.getInstance();
c.setTimeInMillis(alarmTime);
// Schedule the alarm!
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, alarmTime + 15000,
mAlarmSender);
2) du récepteur, j'appelle un service
Bundle bundle = intent.getExtras();
String itemName = bundle.getString("item_name");
String reminderOrAlarmMessage = bundle.getString("message");
String activityToTrigg = bundle.getString("activityToTrigg");
int itemId = Integer.parseInt(bundle.getString("item_id"));
NotificationManager nm = (NotificationManager) context.getSystemService("notification");
CharSequence text = itemName + " "+reminderOrAlarmMessage;
Notification notification = new Notification(R.drawable.icon, text,
System.currentTimeMillis());
Intent newIntent = new Intent();
newIntent.setAction(activityToTrigg);
newIntent.putExtra("item_id", itemId);
CharSequence text1= itemName + " "+reminderOrAlarmMessage;
CharSequence text2= context.getString(R.string.notif_Go_To_Details);
PendingIntent pIntent = PendingIntent.getActivity(context,0, newIntent, 0);
notification.setLatestEventInfo(context, text1, text2, pIntent);
notification.flags = Notification.FLAG_AUTO_CANCEL;
notification.defaults = Notification.DEFAULT_ALL;
nm.notify(itemId, notification);
Merci d'avance,
MONN3T
La solution
OK, lorsque vous définissez un Passoire, vous êtes censé l'affecter un ID unique à celui-ci, au cas où vous souhaitez l'identifier ultérieurement (pour la modifier / l'annulation)
static PendingIntent getActivity(Context context, int requestCode, Intent intent, int flags)
//Retrieve a PendingIntent that will start a new activity, like calling Context.startActivity(Intent).
static PendingIntent getBroadcast(Context context, int requestCode, Intent intent, int flags)
//Retrieve a PendingIntent that will perform a broadcast, like calling Context.sendBroadcast().
Le code de demande est cet identifiant.
Dans votre code, vous continuez à réinitialiser la
PendingIntent pIntent = PendingIntent.getActivity(context,uniqueRQCODE, newIntent, 0);
Il doit s'agir d'un entier, je suppose que vous avez un primaire ( itemID ) qui peut identifier l'alarme A d'alarme b.
Autres conseils
Vous pouvez configurer plusieurs alarmes en fournissant un code de demande différent dans PLINCESIVEENT.GETBRODAST (......)
L'approche que j'ai utilisée pour configurer plusieurs alarmes est que j'ai créé une seule alarme.J'ai initialisé un entier statique en classe d'alarme qui sera incrémenté à chaque fois de mon activité principale chaque fois que je clique sur "Ajouter une alarme" dans mon activité principale. E.g.
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void addAlarmClick(View v) {
AlarmActivity.broadcastCode++;
startActivity(new Intent(this, AlarmActivity.class));
}
}
public class AlarmActivity extends AppCompatActivity {`
//........
public static int broadcastCode=0;
//........
Intent myIntent = new Intent(AlarmActivity.this, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(AlarmActivity.this,
broadcastCode, myIntent, 0);