2012-02-22 1 views
0

다른 시간에 알람을 설정하고 있습니다. particulat 알람을 삭제하고 싶습니다. Ex. 나는 diiferents 시간에 100 개의 알람을 설정 했으므로 2012 년 2 월 25 일 오전 10시 45 분에 알람을 삭제하고 싶습니다. 어떻게하면 돼?특정 알람 취소

알람을 설정하는 코드는 다음과 같습니다.

 final AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
     GregorianCalendar gc=new GregorianCalendar(); 
     gc.set(2012, 1, 22, 10, 42,0); 

     Intent intent = new Intent(this, AlarmService.class); 
     gc.set(Calendar.AM_PM,0); 

     final PendingIntent sender = PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

     am.set(AlarmManager.RTC_WAKEUP, gc.getTimeInMillis(), sender); 

나는 경보를 수신하는 방송 수신기가 있습니다.

+0

Stackoverflow를 검색하셨습니까?이 질문은 전에 답변 했습니까? – st0le

답변

4

알람 요청 코드를 저장해야합니다. 여기서는 1을 입력하십시오. PendingIntent.getBroadcast() 메소드에 전달하는 두 번째 매개 변수는 특정 알람에 대한 요청 코드입니다. 알람을 설정 한 시간과 함께 요청 코드를 저장하면 특정 알람 인스턴스를 쉽게 얻을 수 있습니다 다음은 사용을 취소 할 수 있습니다 : 당신은 그렇지 않으면 알람이 당신이 이전 요청 코드로 설정 한 새로운 시간과 일정이 될 것입니다, 다른 경보에 대한 요청의 각 코드가 고유해야합니다주의해야

AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
Intent intent = new Intent(context, OneShotAlarm.class); //OneShotAlarm is the broadcast receiver you use for alarm  
PendingIntent sender = PendingIntent.getBroadcast(context,alarm_request_code, intent, 0); 
am.cancel(sender); 

.

희망을 얻으십시오.

+0

@kamlesh : 제 수정 된 답변을 참조하십시오. – Hiral

+0

si 나는 내 데이터베이스에 alarmId (RequestCode)와 같은 것을 저장해야만한다. –

+0

예 ... 간단히 말해, 2 개의 열이있는 테이블을 생성한다 : alarmid와 time.Then은 각각의 alarmid를 시간과 함께 저장한다. 특정 time.it에 대한 경보를 찾아 당신에게 ID를 줄 것이다, 그럼 당신은 경보를 취소하기 위해 그것을 사용할 수 있습니다. – Hiral

0

시간과 개체를 추적하기 위해 데이터 구조의 어떤 형태로 저장해야 할 수도 있습니다. 즉, 전에 AlarmManager 객체를 저장하려고 시도하지 않았습니다.