如何解决Android如何使用单个BroadCast接收器创建具有不同请求代码的多个挂起意图的多个实例
#此方法用于通过具有不同ID的警报管理器触发待定意图#i只想在30秒后为每个ID创建待定意图,我想取消触发器ID#
int公告ID = 1、2、3、4、5、6、7(该ID将通过未经过硬编码的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());
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。