我正在尝试使用 Alarmmanager 和 BroadcastReciever 设置每天重复的警报,但警报没有正确触发。
第一次安装应用程序时,我使用以下代码设置警报:
checkFirstTime = getSharedPreferences("firstRun", 0);
db = new DatabaseHandler(this);
if (checkFirstTime.getBoolean("my_first_time", true))
{
db = new DatabaseHandler(this);
db.InitializeAll();
checkFirstTime.edit().putBoolean("my_first_time", false).commit();
//To set alarm manager
setAlarmManager();
Toast.makeText(context, "alarm set", Toast.LENGTH_LONG).show();
}
功能设置警报:
private void setAlarmManager()
{
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 12);
calendar.set(Calendar.MINUTE, 00);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.AM_PM, 0);
AlarmManager alarmMgr;
alarmMgr = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent("com.example.testaclrtn");
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar now = Calendar.getInstance();
long calendarTime= 0;
if(calendar.getTimeInMillis() <= now.getTimeInMillis())
calendarTime = calendar.getTimeInMillis() + (AlarmManager.INTERVAL_DAY+1);
else
calendarTime = calendar.getTimeInMillis() ;
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendarTime,
AlarmManager.INTERVAL_DAY, pendingIntent);
}
BroadcastReciever 包含以下代码:
public class AlarmReceiver extends BroadcastReceiver {
SharedPreferences storeDay;
DatabaseHandler db;
@Override
public void onReceive(Context context, Intent intent)
{
Toast.makeText(context, "Alarm worked.", Toast.LENGTH_LONG).show();
db = new DatabaseHandler(context);
whenNextDay();
Message msgToActivity = new Message();
msgToActivity.what = 5;
}
public void whenNextDay()
{
int count = db.getPickCount(2);
int target = db.getPickTarget(2);
long time = db.getTimeCount(2);
db.updatePickCount(3, count);
db.updatePickTarget(3, target);
db.updateTimeCount(3, time);
count = db.getPickCount(1);
target = db.getPickTarget(1);
time = db.getTimeCount(1);
db.updatePickCount(2, count);
db.updatePickTarget(2, target);
db.updateTimeCount(2, time);
db.updatePickCount(1, 0);
db.updateTimeCount(1, 0);
db.close();
}
请帮助我找出我使用的逻辑或代码有什么问题。谢谢