Pregunta

Hasta ahora y gracias a este sitio web, he podido configurar una alarma que se configurará y activa, incluso si gira de mi teléfono.

Ahora, configuro una alarma para mostrar un recordatorio para el evento A y necesito la aplicación para configurar otra alarma para mostrar otro recordatorio para el evento b.

Debo estar haciendo algo mal, porque solo dispara el recordatorio para el evento A. Parece que una vez configurada, cualquier otra alarma se entiende como la misma.: - (

Aquí está el detalle de lo que estoy haciendo en dos pasos:

1) De una actividad Configure una alarma que a cierta hora y fecha llamará a un receptor

                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) del receptor I Llama a un servicio

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

gracias de antemano,

MONN3T

¿Fue útil?

Solución

OK, cuando establece un PendingIntent, se supone que debe asignarle una identificación única, en caso de que desee identificarlo más tarde (para modificarlo / cancelarlo)

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().

El código de solicitud es ese ID.

En su código, sigue reiniciando el mismo PendingIntent, en su lugar, use un código de solicitud diferente cada vez.

PendingIntent pIntent = PendingIntent.getActivity(context,uniqueRQCODE, newIntent, 0);

Tiene que ser un número entero, supongo que tiene un primario ( itemid ) que puede identificar la alarma a de la alarma B.

Otros consejos

Puede configurar múltiples alarmas al suministrar un código de solicitud diferente en PendingIntent.getBroadCast (......)

El enfoque que utilicé para configurar múltiples alarmas es que creé una sola alarma.Inicié un entero estático en la clase de ajuste de alarma que se incrementará cada vez desde mi actividad principal cuando haga clic en el botón "Agregar alarma" en mi actividad principal. 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));
}
}

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top