안녕하세요 이거 가지고 며칠을 머리속에서 쌈 중인지 모르겠습니다.


//기본 알람 세팅하는 method

private void setAlarm() {

am = (AlarmManager)getSystemService(Context.ALARM_SERVICE);

am.setTimeZone("GMT+9:00");


hour = cat.get(Calendar.HOUR_OF_DAY);

minute = cat.get(Calendar.MINUTE);

Intent intent = new Intent(this, AlarmReceive.class);

PendingIntent pi = PendingIntent.getBroadcast(ConfigActivity.this, 0, intent, 0);

year = cat.get(Calendar.YEAR);

month = cat.get(Calendar.MONTH);

day = cat.get(Calendar.DAY_OF_MONTH);

// 알람 강제 해제

am.cancel(pi);

// 내일 이시간에 다시 알람 울리게 하기

am.setRepeating(AlarmManager.RTC_WAKEUP, cat.getTimeInMillis(), 1000*60*60*24, pi);

Param.setAlsetstat(true);

}


이건 정상 작동을 하는 것으로 파악되었습니다.


// Manifest 리시버 등록

<receiver android:name="AlarmReceive"> 

<intent-filter> 

<action android:name="android.intent.action.BOOT_COMPLETED"/>

<category android:name="kr.audio.weather"/>

</intent-filter> 

</receiver> 


// Receiver에서 동작시키는 코드

Calendar cal = Calendar.getInstance();

year = cal.get(Calendar.YEAR);

month = cal.get(Calendar.MONTH);

day = cal.get(Calendar.DAY_OF_MONTH);

week_day = cal.get(Calendar.DAY_OF_WEEK);


wdb = new WeatherDBHelper(context);

wdb.openRDB();

db = wdb.getDb();

cur = new CurrentWeatherActivity(context);


//db에서 알람시간을 받아와서 Integer값으로 변환처리

c = db.rawQuery("SELECT * FROM WEATHER_INFO WHERE _id = 4", null);

if(c != null) {

c.moveToNext();

xt = c.getString(2);

xt1 = xt.substring(0,2);

xt2 = xt.substring(3,5);

}

c.close();


hour = Integer.parseInt(xt1);

minute = Integer.parseInt(xt2);


//현재 calendar 시간설정

cal.set(year, month, day, hour, minute, 0);

wdb.closeDB();


String x = intent.getAction();

if(x.equals("android.intent.action.BOOT_COMPLETED")){

Intent in = new Intent(context, AlarmReceive.class);

PendingIntent pi = PendingIntent.getService(context, 0, in, PendingIntent.FLAG_UPDATE_CURRENT);

AlarmManager alarms = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);

alarms.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 1000 * 60 * 60 * 24, pi);

}

}


혹시나 하여 바로 위 부분의 부팅이 되고 난 직후에 시간 설정이 어떻게 되었는지도 로그로 확인했지만 정상적이었습니다.

그러나 문제는 설정되었다고 확인이 된 이후에 저 리시버가 돌지 않는 다는 것인데요. 어떤 부분인지를 정확히 모르겠습니다.