android – 如何创建多个警报?

我可以使用下面的代码创建和取消警报.
我想创建多个警报.闹钟时间来自arraylist.在这个arraylist我想为每个日期创建一个警报.按下取消按钮将仅取消当前警报.我该怎么做?

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    setOneTimeAlarm(); 

    buttonCancel.setOnClickListener(new Button.OnClickListener() {
        @Override
        public void onClick(View arg0) {
            AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
            alarmManager.cancel(pendingIntent);

            // Tell the user about what we did.
            Toast.makeText(MainActivity.this,"Cancel!",Toast.LENGTH_LONG).show();
        }
    });
}

private void setOneTimeAlarm() {
    Intent intent = new Intent(this,AReceiver.class);
    pendingIntent = PendingIntent.getBroadcast(this,intent,PendingIntent.FLAG_ONE_SHOT);
    alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent);
}
最佳答案
我将以我在其中一个应用程序中创建的方式发布一个示例.

在呼叫闹钟时,您需要发送一个额外的ID,如下所示:
Tmp是具有唯一ID的对象.

Intent intent = new Intent(DisplayActivity.this,AlarmReciever.class);

intent.setData(Uri.parse("timer:"+tmp.getId()));

PendingIntent pendingIntent = PendingIntent.getBroadcast(DisplayActivity.this,1,0);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP,pendingIntent);

然后用这一行检索id:

Long.parseLong(intent.getData().getSchemeSpecificPart())

取消时只需使用ID创建相同的待处理意图并调用alarmmanager.cancel()

编辑:

要取消用户单击的项目上的特定警报(这里是tmp.getId派上用场的地方)我刚使用此代码,我认为您需要创建相同的pendingIntent才能取消特定的警报.

 Intent intent = new Intent(DisplayActivity.this,AlarmReciever.class);
 intent.setData(Uri.parse("timer:"+tmp.getId()));
 PendingIntent pendingIntent = PendingIntent.getBroadcast(DisplayActivity.this,0);
 AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
 am.cancel(pendingIntent);

AlarmReciever是我的BroadcastReceiver. DisplayActivity是活动本身.

它在AlarmReciever中我有以下代码

Long.parseLong(intent.getData().getSchemeSpecificPart())

相关文章

以下为个人理解,如错请评 CE: 凭据加密 (CE) 存储空间, 实际路径/data/user_ce/ DE: 设备加密 (DE) 存...
转载来源:https://blog.csdn.net/yfbdxz/article/details/114702144 用EventLog.writeEvent打的日志(或...
事件分发机制详解 一、基础知识介绍 1、经常用的事件有:MotionEvent.ACTION_DOWN,MotionEvent.ACTION...
又是好久没有写博客了,一直都比较忙,最近终于有时间沉淀和整理一下最近学到和解决的一些问题。 最近进...
Android性能优化——之控件的优化 前面讲了图像的优化,接下来分享一下控件的性能优化,这里主要是面向...
android的开源库是用来在android上显示gif图片的。我在网上查了一下,大家说这个框架写的不错,加载大的...