마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

특정 알람을 구별하여 취소하는 방법

0 추천

제가 알람 관련 앱을 제작중에 있는데 

하나의 액티비티에서 여러개의 알람을 생성하고 이후

해당 액티비티를 껏다가 다시 켜서

제가 원하는 알람의 시간을 취소 혹은 수정할 수 있는 기능을 만들려고 합니다.

 

아마 코드로 하면 이렇게 되겠죠...

Intent intent = new (호출 Activiti.this, 리시버.class);    <- 이러한 인텐트를 여러개 만들고

PendingIntent temp = PendingIntent(context, 0, intent, 0);   <- 이러한 펜딩인텐트를 여러개 만들어 

AlarmManager am = (AlarmManager)getSystemService(알람 매니저);

am.set(시간, 인텐트); <- 이렇게 각 인텐트에 대한 알람을 여러번 설정 합니다.

 

이후 액티비티를 껏다가 다시 켜서 

am.cancel( 앞서 선언했던 각각의 펜딩 인텐트중 특정 인텐트 하나 ) <- 이렇게 앞서 선언했던 인텐트 중 제가 원하는 하나를 취소하고 싶을 때 취소 하려고 합니다.

 

각 인텐트의 시간은 따로 db에 저장하고 있고 각 인텐트를 식별하여 취소하고 싶은데 이것을 어떻게 해야 할지 의문이네요.

caroan (120 포인트) 님이 2013년 7월 12일 질문

2개의 답변

+1 추천
PendingIntent 생성 시 두번째 파라미터 값이 고유 식별 파라미터 입니다.

 

해당 파라미터에 DB 의 id 값을 넣으면 되지 않을까 싶은데요...?
익명사용자 님이 2013년 7월 15일 답변
0 추천
AlarmManager에서 PendingIntent를 cancel 할 수 있는 조건으로

cancel 시에 주어진 PendingIntent에 들어 있는

intent 객체의 action, data, type, class, categories의 동일 여부 판단으로 한다고 API 설명에

나와 있는 것 같은데요.

질문하시는 분이 사용할 수 있는 방법으로는

intent 객체 생성 시 각각의 data 값을 설정해주어서 객체를 구분할 수 있도록 만들면 될 것 같습니다.

예를 들어 각 알람 intent 생성 시 data 값으로 DB에 있는 ITEM의 URI 값을 설정해주시고,

수정/삭제되는 해당 DB 아이템이 생기는 경우

해당 ITEM의  URI를 설정한 data를 가진 intent의 PendingIntent를

AlarmManager에서 취소 및 필요 시 갱신하면 될 것 같습니다.

위와 같이 구현하신다면 제가 직접 해보지 않았지만 구분하여 취소/갱신을 할 수 있을 것 같습니다.
광휘 (860 포인트) 님이 2013년 7월 13일 답변
...