title: Get list of registered Pending Intents in Android OS
body: <p>I register alarms which I schedule to execute at given time, and it can be many alarms depending on the size of the scheduled list. But I have two questions which remains unclear to me:</p>
  
  <p>1) How can I query the OS for the Pending Intents I registers? I need this for testing. The psudo code for what I want would be something like this:</p>
  
  <pre><code>List&lt;PendingIntent&gt; intentsInOS = context.getAllPendingIntentsOfType(AppConstants.INTENT_ALARM_SCHEDULE));
  </code></pre>
  
  <p>2) See the pending intent I create, I provide an action and extra data (the schedule id). </p>
  
  <pre><code>private Intent getSchedeuleIntent(Integer id) {
  
      Intent intent = new Intent(AppConstants.INTENT_ALARM_SCHEDULE);
      intent.putExtra(AppConstants.INTENT_ALARM_SCHEDULE_EXTRA, id);
  
      return intent;
  }
  </code></pre>
  
  <p>But we also say that the intent have FLAG_CANCEL_CURRENT. Will it cancel all pending intents with same action, or does it have to both same action AND extra data?</p>
  
  <pre><code>PendingIntent pendingIntent = PendingIntent.getBroadcast(context.getApplicationContext(), 0, getSchedeuleIntent(schedule.id), PendingIntent.FLAG_CANCEL_CURRENT);
  </code></pre>
  
  <p>My code</p>
  
  <pre><code>@Override
  public void run() {
  
      List&lt;ScheduledLocation&gt; schedules = dbManager.getScheduledLocations();
      if(schedules == null || schedules.isEmpty()){
          return;
      }
  
      AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
      //alarmManager.
  
      // we need to get the number of milliseconds from current time till next hour:minute the next day.
      for(ScheduledLocation schedule : schedules){
  
          long triggerAtMillis = DateUtils.millisecondsBetweenNowAndNext(now, schedule.hour, schedule.minute, schedule.day);
          PendingIntent pendingIntent = PendingIntent.getBroadcast(context.getApplicationContext(), 0, getSchedeuleIntent(schedule.id), PendingIntent.FLAG_CANCEL_CURRENT);
  
          alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtMillis, MILLISECONDS_IN_WEEK, pendingIntent);
      }
  
      // List&lt;PendingIntent&gt; intentsInOS = context.getAllPendingIntentsOfType(AppConstants.INTENT_ALARM_SCHEDULE));
  
  }
  
  
  private Intent getSchedeuleIntent(Integer id) {
  
      Intent intent = new Intent(AppConstants.INTENT_ALARM_SCHEDULE);
      intent.putExtra(AppConstants.INTENT_ALARM_SCHEDULE_EXTRA, id);
  
      return intent;
  }
  </code></pre>