1

我正在尝试发出一个会在指定的 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!");

        }
    }
}
4

2 回答 2

1

我刚刚回答了同样的问题,您缺少在 Manifest 中以特定意图定义 Receiver。

答案链接

并且您必须将第二个参数从“123”更改为随机且唯一的数字,您可以通过 int 计数来做到这一点,并在未决意图中使用 count ++ 代替 123 // 固定

于 2012-07-06T17:55:48.850 回答
0

以这种方式创建警报将每次都简单地替换旧警报,因为它们是使用相同的代码创建的。每次修改请求代码将允许创建多个警报。如果您每次都通过循环将 i 添加到您的 123 中就足够了。

此外,您是否设置了一个接收器类以及清单中定义的接收器?如果不是,则不会收到警报。

警报管理器示例

于 2012-07-06T17:59:31.047 回答