#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
? Неясно, что вы хотите сделать