【发布时间】:2023-04-03 16:15:01
【问题描述】:
在我的应用程序中,我需要在数据库中添加一行并同时设置一个警报事件,以便每天在其中一个数据库列中指定的时间重复。我已经有一些代码,但它不会在指定时间触发警报事件。这是我的代码:
public class Add_reminder extends Activity {
AlarmManager am;
int hours, minutes;
REMIND_DB db;
Calendar calendar;
Cursor cursor;
Button button;
public void onCreate(Bundle savedInstanceState) {
//The usual code in the beginning of onCreate
//I load db from extended Application class as global since i use it in more
//Activities. Ints hours and minutes is set by user interaction
calendar = Calendar.getInstance();
am = (AlarmManager) getSystemService(ALARM_SERVICE);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
db.open();
db.insertReminder( -- parameters for database --);
cursor = db.getAllReminders();
cursor.moveToLast();
calendar.set(Calendar.HOUR, hours);
calendar.set(Calendar.MINUTE, minutes);
Intent intent = new Intent(Add_reminder.this, ReminderAlarm.class);
intent.putExtra("id_of_db_row", cursor.getInt(0));
PendingIntent pi = PendingIntent.getActivity(Add_reminder.this,
cursor.getInt(0), intent, PendingIntent.FLAG_CANCEL_CURRENT);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
24*3600*1000, pi);
db.close()
}
});
}
}
数据库已正确更新,但 ReminderActivity 从未在指定时间启动。我不知道有什么问题。我看到了一些使用 BroadcastReceiver 的示例代码,而不是使用 PendingIntent 直接启动 Activity,但这也应该有效,对吧?有谁知道可能出了什么问题?
我的第二个问题是,当我想从不同的 Activity 添加或删除一些警报时,我是否需要相同的 AlarmManager 实例,还是我只是在我需要的每个 Activity 中声明另一个 AlarmManager?
谢谢!
【问题讨论】:
标签: android alarmmanager android-pendingintent