2011-01-17 4 views
8

알람이 활성화되어 있는지 확인하려고합니다. alarmIsSet 메서드는 알람이 설정되기 전에 false를 반환하고 알람이 설정된 경우 true를 반환합니다. 그러나 경보가 취소 된 후에도 alarmIsSet은 장치를 재부팅 할 때까지 계속 true를 반환합니다. 어떻게 해결할 수 있습니까?알람이 설정되어 있는지 확인하는 방법

public class Alarm extends Activity { 
    private Intent intent = new Intent("PROPOSE_A_TOAST"); 

    private void alarm (boolean activate) { 
     AlarmManager am = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
     PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, 0); 

     if(activate == true) { 
      int type = AlarmManager.ELAPSED_REALTIME_WAKEUP; 
      long interval = 3000; 
      long triggerTime = SystemClock.elapsedRealtime();  
      am.setRepeating(type, triggerTime, interval, pi);  
     } else { 
      am.cancel(pi); 
     } 
    } 

    private boolean alarmIsSet() { 
     return PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_NO_CREATE) != null; 
    } 
} 

답변

0

가장 쉬운 방법은 알람이 당신이 무엇인지 한 번 확인하기 (설정되지 않은 경우와 같은 값이 아닌 경우, 알람 변수에 (날짜) 시간의 값을 확인하는 것입니다) 알람이 활성화되었음을 나타내며 프로그램 체크인시 알람이 울리거나 아직 도착하지 않은 시간이거나 알람이 울리지 않았거나 갔다. 규칙은 재부팅 또는 전원 끄기 또는 12 또는 24 시간마다 장치 세션별로 하나의 경보 활성화 만 허용 할 수 있으며 이는 상태가 지워지지 않는 이유 일 수 있습니다. 당신은 단지이 재료로 자신을 몇 가지 두통을 가진 후

pi.cancel(); 

am.cancel(pi); 
14

, 나는 어떻게 든 보류중인 의도를 생성했다면 것을, 물건을 테스트하는 동안 것을 발견 그것은 실제로 테스트들 사이에 정리되지 않았습니다. 앱을 죽이는 것조차도 그렇게하지 않았습니다. 그 의도는 여전히 시스템에 남아 있었고 검사 할 때 참으로 돌아 왔습니다. 실제로 테스트하기 전에 그것을 죽일 코드를 작성해야했습니다.

관련 문제