안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요
알람을 버튼 이벤트에 달아놨습니다.
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent;
PendingIntent sender;
intent = new Intent(Web.this, Alarm_execute.class);
sender = PendingIntent
.getBroadcast(Web.this, alarm_code, intent, 0);
alarm.setAlarm_code(alarm_code);
alarm_code++;
버튼을 누르면 알람이 생성되고요( alarm_code로 알람을 여러개 생성하고 있습니다. )
Data 객체(현재 알람을 생성했을 때 시간이나, 설정값들을 저장한 데이터) 도 함께 생성되서 현재 알람 상황을 다른 객체에서 리스트뷰로
뿌려주고 있습니다.
리스트뷰에서 그 객체를 삭제하면 알람도 같이 삭제되게 하고 싶은데요, API를 보면 am.cancel(sender); 이렇게 하면 되지만
다른액티비티 (리스트뷰가 있는 액티비티) 에서 삭제하는 방법을 모르겠네요 ㅠ cancel 함수를 사용하긴 해야할 것 같은데
버튼 있는 엑티비티에서 만든 알람 객체의 함수를 다른 액티비티에서 사용 할 수 있나요?




http://developer.android.com/reference/android/app/AlarmManager.html#cancel(android.app.PendingIntent)
http://developer.android.com/reference/android/content/Intent.html#filterEquals(android.content.Intent)
레퍼런스를 보면 filterEquals 에 만족하는 pendingintent 객체를 AlarmManager.cancel 메소드 파라미터로 줄 수 있으면 된다고 되어있습니다.
intent = new Intent(getApplicationContext(), Alarm_execute.class); 만들고 intent.putExtra 로 alarm_code 를 같이 넘겨서 ....
취소할 때는
intent = new Intent(getApplicationContext(), Alarm_execute.class); 만들고 extra로 넘겨받은 alarm_code를 가지고 pendingintent 를 만들어서 AlarmManager.cancel(sender); 로 하시면 취소됩니다.
요는 같은 intent 를 만들 수 있고 같은 requestCode로 pendingIntent 를 만들 수 있으면 어디서든 알람 취소를 할 수 있다는 겁니다.