Vous n'avez pas à garder de référence. Il suffit de définir une nouvelle PendingIntent comme exactement le même que celui que vous avez défini lors de la création.
Par exemple:
si j'ai créé un PendingIntent pour être déclenché par le AlarmManager comme ceci:
Intent alarmIntent = new (getApplicationContext(), AlarmBroadcastReceiver.class);
alarmIntent.setData(Uri.parse("custom://" + alarm.ID));
alarmIntent.setAction(String.valueOf(alarm.ID));
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
PendingIntent displayIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, alarmIntent, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, alarmDateTime, displayIntent);
Puis, quelque part dans votre code (même d'une autre activité), vous pouvez le faire pour annuler:
Intent alarmIntent = new (getApplicationContext(), AlarmBroadcastReceiver.class);
alarmIntent.setData(Uri.parse("custom://" + alarm.ID));
alarmIntent.setAction(String.valueOf(alarm.ID));
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
PendingIntent displayIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, alarmIntent, 0);
alarmManager.cancel(displayIntent);
La chose importante ici est de définir le PendingIntent avec exactement les mêmes données et d'action, et d'autres critères comme indiqué ici http://developer.android.com/reference/android/app/AlarmManager.html#cancel%28android.app.PendingIntent%29