Android как создать несколько экземпляров ожидающего намерения с разными кодами запроса, используя один широковещательный приемник

#android #android-intent #broadcastreceiver #alarmmanager #android-pendingintent

#Android #android-намерение #broadcastreceiver #alarmmanager #android-pendingintent

Вопрос:

# этот метод используется для запуска ожидающих намерений с помощью диспетчера сигналов тревоги с разными идентификаторами # я просто хочу создать ожидающее намерение для каждого идентификатора через 30 секунд, я хочу отменить идентификатор триггера#

идентификатор бюллетеня int = 1,2,3,4,5,6,7 (идентификаторы будут динамически передаваться из API, которые не заданы жестко, поэтому они могут быть от 1 до 100); `

 public void setOk(Context context, int okId) {
        triggerAlarm(context ,okId);
    }
private void triggerAlarm(Context context, int bulletinId) {
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        if (alarmManager != null) {
            Intent intent = new Intent(context, BulletinReceiver.class);
            intent.putExtra("bulletinId", bulletinId);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(context, bulletinId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
            //set time to next 30 sec
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.set(Calendar.SECOND, calendar.get(Calendar.SECOND)   30);
            alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
            LogUtils.d(TAG, "triggerAlarm: ");
        }
    }
  

BulletinReceiver:

 public class BulletinReceiver extends BroadcastReceiver {

    private static final String TAG = "BulletinReceiver";
    int bulletinID;

    @Override
    public void onReceive(Context context, Intent intent) {
        LogUtils.d(TAG, "onReceive: ");
        bulletinID = intent.getIntExtra("bulletinId",0);
        Log.d("Sathish", "onreciver: bulletinId: "   bulletinID);
        ArrayList<Integer> okBulletinIdList = SharedPreferenceUtils.getInstance(context).geOkBulletinIdList();
        if(okBulletinIdList.size()>0){
            okBulletinIdList.remove((Integer) bulletinID);

        }
        SharedPreferenceUtils.getInstance(context).setOkBulletinIdList(okBulletinIdList);
        BulletinMessageUtils.getInstance().setBulletinTimerFlag(context, bulletinID);
        Log.d("Sathish", "onreciver canceld: bulletinId: "    SharedPreferenceUtils.getInstance(context).geOkBulletinIdList().toString());
    }

}
  

Комментарии:

1. У вас есть код. В чем ваша проблема?

2. как я упоминал выше, как создать ожидающее намерение для каждого «идентификатора» с использованием одного широковещательного приемника и отменить намерение конкретного идентификатора через 30 секунд

3. Извините, все еще не понимаю вашей проблемы. Вы уже создаете PendingIntent . И установить с ним сигнал тревоги, который сработает через 30 секунд. Что еще вы хотите с этим сделать PendingIntent ?

4. Например: у меня другой код запроса (0,1,2,3,4), и я хочу создать PendingIntent для каждого кода запроса (в данном случае bulletinID в моем коде) с помощью одного широковещательного приемника и отменить PendingIntent на основе кода запроса.

5. Вы уже это говорили. Это не имеет смысла. Вы уже опубликовали код, который создает a PendingIntent с другим кодом запроса. Отлично. Теперь, что вы хотите с этим сделать PendingIntent ? Неясно, что вы хотите сделать