我正在尝试发出一个会在指定的n次响铃的闹钟。我的代码如下。我能够正确地获取条目,但根本没有响铃。
public void setAlert(View view) {
int h[] = new int[TOTAL_ALARMS];
int m[] = new int[TOTAL_ALARMS];
Intent intent[] = new Intent[TOTAL_ALARMS];
PendingIntent pendingIntent[] = new PendingIntent[TOTAL_ALARMS];
int piID = 12345;
Calendar[] cal = new Calendar[TOTAL_ALARMS];
for (int i = 0; i < TOTAL_ALARMS; i++) {
cal[i] = Calendar.getInstance();
}
for (int i = 0; i < TOTAL_ALARMS; i++) {
try {
m[i] = Integer.parseInt(editHour[i].getText().toString());
h[i] = Integer.parseInt(editMinute[i].getText().toString());
cal[i].set(Calendar.HOUR, h[i]);
cal[i].set(Calendar.MINUTE, m[i]);
intent[i] = new Intent(this, AlarmService.class);
pendingIntent[i] = PendingIntent.getActivity(this,
piID++, intent[i], PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP,
cal[i].getTimeInMillis(), pendingIntent[i]);
Toast.makeText(this, "Alarm set", Toast.LENGTH_LONG).show();
} catch (Exception ex) {
ex.printStackTrace();
System.out.print("OOPS!");
}
}
}
答案 0 :(得分:1)
我刚刚回答了同样的问题,你遗漏了具有特定意图的Manifest中的Receiver。
你必须将第二个参数从“123”更改为随机且唯一的数字,你可以通过int计数,并在待定意图中使用count ++代替123 // fixed
答案 1 :(得分:0)
以这种方式创建警报只会简单地替换旧警报,因为它们是使用相同的代码创建的。每次修改请求代码将允许创建多个警报。如果您只是通过循环将i添加到123中就足够了。
此外,您是否设置了接收器类以及清单中定义的接收器?如果不是,则不会收到警报。