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

Était-ce utile?

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 la même en piétinent, utilisez plutôt un autre code à chaque fois.

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));
}
}

alarcittivité.java

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);

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top