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();
}
기능에서 setalarm :
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();
}
을
제 논리 또는 코드가 잘못 사용 된 것을 알아내는 데 도움을주십시오. 감사합니다
당신이 당신의 AndroidManifest.xml에'BroadcastReceiver'을 등록을? – Blacklight
예, 알았는데 알람이 한 번 해고 되겠지만 반복되지는 않습니다. –