Sto provando a utilizzare la nuova interfaccia delle notifiche. Ho aggiunto 3 pulsanti alle notifiche e voglio salvare qualcosa nel mio database una volta che ognuno di essi è stato cliccato.Determina clic su addAction per le notifiche Android
La notifica di per sé funziona bene e viene visualizzata quando chiamata, non so come catturare ciascuno dei tre diversi clic del pulsante.
Sto utilizzando uno BroadcastReceiver
per catturare i clic, ma non so come dire quale pulsante è stato fatto clic.
Questo è il codice di AddAction
(ho escluso il resto della notifica, come funziona bene) -
//Yes intent
Intent yesReceive = new Intent();
yesReceive.setAction(CUSTOM_INTENT);
Bundle yesBundle = new Bundle();
yesBundle.putInt("userAnswer", 1);//This is the value I want to pass
yesReceive.putExtras(yesBundle);
PendingIntent pendingIntentYes = PendingIntent.getBroadcast(this, 12345, yesReceive, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.addAction(R.drawable.calendar_v, "Yes", pendingIntentYes);
//Maybe intent
Intent maybeReceive = new Intent();
maybeReceive.setAction(CUSTOM_INTENT);
Bundle maybeBundle = new Bundle();
maybeBundle.putInt("userAnswer", 3);//This is the value I want to pass
maybeReceive.putExtras(maybeBundle);
PendingIntent pendingIntentMaybe = PendingIntent.getBroadcast(this, 12345, maybeReceive, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.addAction(R.drawable.calendar_question, "Partly", pendingIntentMaybe);
//No intent
Intent noReceive = new Intent();
noReceive.setAction(CUSTOM_INTENT);
Bundle noBundle = new Bundle();
noBundle.putInt("userAnswer", 2);//This is the value I want to pass
noReceive.putExtras(noBundle);
PendingIntent pendingIntentNo = PendingIntent.getBroadcast(this, 12345, noReceive, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.addAction(R.drawable.calendar_x, "No", pendingIntentNo);
Questo è il codice della BroadcastReceiver
-
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.v("shuffTest","I Arrived!!!!");
//Toast.makeText(context, "Alarm worked!!", Toast.LENGTH_LONG).show();
Bundle answerBundle = intent.getExtras();
int userAnswer = answerBundle.getInt("userAnswer");
if(userAnswer == 1)
{
Log.v("shuffTest","Pressed YES");
}
else if(userAnswer == 2)
{
Log.v("shuffTest","Pressed NO");
}
else if(userAnswer == 3)
{
Log.v("shuffTest","Pressed MAYBE");
}
}
}
I registrato il BroadcastReceiver
nel Manifesto. Inoltre, voglio menzionare che il BroadcastReceiver
viene chiamato quando faccio clic su uno dei pulsanti nella notifica, ma l'intento include sempre un extra di "2".
Questa è la notifica iteslf -
che è strano. Non vedo alcun errore nel tuo codice. Se cambi l'ordine di addAction() (e la creazione PendingIntent), ottieni ancora "2"? – Quanturium
In questo caso mi dà solo l'ultima addAction() che ho chiamato – Tofira
Posso registrare tre BroadcastReceiver per ciascuno dei tre pulsanti, ma voglio davvero evitarlo. – Tofira