1

我有一个应用程序,它有一个可以完美运行的警报系统,我复制了所有 5 个类,只是更改了数据库名称,但它不起作用,我可以通过你所有的代码,但我想听听是否有人有类似的东西这之前。

正如我所说的 new ReminderManager(this).setReminder(mRowId,mCalendar);

rowID 已满(某个数字)和 mCalendar(有一个日期,我将其与我拥有的另一个应用程序的 Mcalendar 的日期进行比较,并且格式相同),当我调用它时,一切都按照它创建的方式进行待定意图

public void  setReminder(Long taskId, Calendar when)
{
    Intent i= new Intent(mContext,OnAlarmReciver.class);
    i.putExtra(DatabaseIN.KEY_ROWID,(long)taskId);


    PendingIntent pi=PendingIntent.getBroadcast(mContext,0, i, PendingIntent.FLAG_ONE_SHOT);
    mAlarmManager.set(AlarmManager.RTC_WAKEUP,when.getTimeInMillis(),pi);

}
after this nothing happens... can anyone help
4

3 回答 3

0

也许when还没有发生(在未来太远)或者它已经发生了(在你打电话之前是过去set())。

或者,也许您没有OnAlarmReceiver在清单中定义。

于 2012-03-08T14:26:20.543 回答
0

尝试清理你的项目->清理,如果这无助于创建一个新项目并重新开始编写这些类......这对我有用:D

于 2012-03-11T13:10:44.433 回答
0

PendingIntent.getBroadcast 将重用一个匹配的pendingIntent,所以它可能已经触发了那个挂起的intent(例如,可能来自您复制它的代码),并且由于您使用的是FLAG_ONE_SHOT 标志,它只会触发一次。

快速测试是删除 FLAG_ONE_SHOT 标志,看看它是否会触发。如果这是问题所在,那么只需在 PendingIntent.getBroadcast 中使用不同的请求代码。

于 2012-03-08T14:57:41.177 回答