J'essaie d'utiliser la nouvelle interface de notifications. J'ai ajouté 3 boutons aux notifications, et je veux enregistrer quelque chose dans ma base de données une fois que chacun d'eux est cliqué.Determine addAction click pour les notifications Android
La notification elle-même fonctionne bien et est affichée lors de l'appel, je ne sais tout simplement pas comment capturer chacun des trois clics différents.
J'utilise un BroadcastReceiver
pour attraper les clics, mais je ne sais pas comment dire quel bouton a été cliqué.
C'est le code de AddAction
(je l'ai exclu le reste de la notification, comme fonctionne bien) -
//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);
C'est le code du 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 J'ai enregistré le BroadcastReceiver
dans le manifeste. En outre, je tiens à mentionner que le BroadcastReceiver
est appelé lorsque je clique sur l'un des boutons de la notification, mais l'intention comprend toujours un supplément de '2'.
Ceci est la notifcation iteslf -
qui est étrange. Je ne vois aucune erreur dans votre code. Si vous modifiez l'ordre de addAction() (et la création PendingIntent), obtenez-vous toujours '2'? – Quanturium
Dans ce cas, il me donne juste le dernier addAction() que j'ai appelé – Tofira
Je peux enregistrer trois BroadcastReceivers pour chacun des trois boutons, mais je veux vraiment éviter cela. – Tofira