에러 사진입니다.
지금 로고켓이 나오다안나오다해서 같은 에러를 찾아 찍어올립니다.
http://stackoverflow.com/questions/6877555/access-a-database-from-broadcast-reciever
public class Alarm_BootReceiver extends BroadcastReceiver {
static final String ACTION = "android.intent.action.BOOT_COMPLETED";
private DB_DataBase_Helper DBHelper;
private Cursor DBCursor;
int getAlarm_id;
int timeSECOND;
int DB_time_h;
int DB_time_m;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION)) {
for (int i = 1; i < DBCursor.getCount() + 1; i++) {
DB_time_h = Integer.parseInt(DBHelper.getColumn(i).getString(
DBCursor.getColumnIndex("time_h")));
DB_time_m = Integer.parseInt(DBHelper.getColumn(i).getString(
DBCursor.getColumnIndex("time_m")));
getAlarm_id = Integer.parseInt(DBHelper.getColumn(i).getString(
DBCursor.getColumnIndex("alarm_id")));
setAlarm(context, getAlarm_id);
}
}
}
private void setAlarm(Context context, int req) {
AlarmManager alarmManager = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
Intent Intent = new Intent(context, Alarm_event.class);
PendingIntent pIntent = PendingIntent.getActivity(context, req, Intent,
0);
alarmManager
.setRepeating(
AlarmManager.RTC_WAKEUP,
((System.currentTimeMillis() + getDateTimeDiffer()) - (timeSECOND * 1000)),
86400 * 1000, pIntent);
Toast.makeText(context, req + "시작", Toast.LENGTH_LONG).show();
}
// 현재 시간과 알람 설정 시간의 시간 차이를 반환 (알람 시작을 위해 사용)
public long getDateTimeDiffer() {
long difference = 0;
Calendar time1 = Calendar.getInstance();
Calendar time2 = Calendar.getInstance();
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
String HHmm = new SimpleDateFormat("MMddHHmmss").format(date);
int timeHOUR = Integer.parseInt(HHmm.substring(4, 6));
int timeMINUTE = Integer.parseInt(HHmm.substring(6, 8));
timeSECOND = Integer.parseInt(HHmm.substring(8, 10));
// 현재시간
time1.set(Calendar.HOUR_OF_DAY, timeHOUR);
time1.set(Calendar.MINUTE, timeMINUTE);
// 예약시간
time2.set(Calendar.HOUR_OF_DAY, DB_time_h);
time2.set(Calendar.MINUTE, DB_time_m);
// 현재시간 time1과 예약시간 time2의 간격 계산
if (time1.getTimeInMillis() > time2.getTimeInMillis()) {
difference = ((86400 * 1000) - (Math.abs(time2.getTimeInMillis()
- time1.getTimeInMillis())));
} else if (time1.getTimeInMillis() < time2.getTimeInMillis()) {
difference = Math.abs(time2.getTimeInMillis()
- time1.getTimeInMillis());
} else if (time1.getTimeInMillis() == time2.getTimeInMillis()) {
difference = 86400 * 1000;
}
return difference;
}
}
안녕하세요. 안드로이드 입문자입니다.
지금 알람을 구현중입니다. 이제 마지막으로 폰은 재부팅시에 브로드캐스트에서 BOOT_COMPLETED 액션을 받아
DB의 값을 이용해서 다시 알람매니저에 등록하는 일만 남았습니다.
테스트를 위해 DB와 관련된 부분은 주석하고 테스트하니 다른 부분은 다 잘되는군요.
그리고 DB 소스가 잘못됬나 일반 엑티비티클래스 생성해서 테스트해보니까 원하는 대로 잘됩니다.
브로드캐스트와 DB의 연동에 관한 문재라고 생각됩니다.
선배님들은 어떻게 생각하시는지 조언 부탁드립니다.