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

알람매니저 브로드캐스트 사용 문제 입니다

0 추천
액티비티에서 알람매니저를 이용해 정해진 시간이 되면

브로드캐스트를 실행하는 예제 입니다.

그런데 브로드캐스트에서 인텐트한 액티비티가

전화 걸때, 끊을 때 다 동작을 합니다.

무슨 이유인지 모르겠습니다..

도와주십쇼..ㅠㅠ

 

 

 

TestSendReciverActivity.java-------

btn.setOnClickListener(new View.OnClickListener() {
   
         
   public void onClick(View v) {
     Intent i = new Intent(TestSendReciverActivity.this, AllActivity.class);            
     startActivity(i);
     Calendar alarmCalender= Calendar.getInstance();  

     Random randomGenerator = new Random();
     
     int start = 3;

     int end = 5;

     double range = end - start + 1;

      int dd = alarmCalender.get(Calendar.DAY_OF_WEEK)+1;
      if(dd == 8)
      {
       dd = 1;
      }
     
      int randomInt3to5 = (int)(randomGenerator.nextDouble() * range + start);
      Log.e("3~5", Integer.toString(randomInt3to5));
      int randomInteger = randomGenerator.nextInt(59);
      Log.e("0~60", Integer.toString(randomInteger));
     

        alarmCalender.set(Calendar.DAY_OF_WEEK, alarmCalender.get(Calendar.DAY_OF_WEEK));  

        //alarmCalender.set(Calendar.AM_PM, Calendar.PM);
       
        alarmCalender.set(Calendar.HOUR_OF_DAY, 9);

        alarmCalender.set(Calendar.MINUTE, 9);

        alarmCalender.set(Calendar.SECOND,0);
       
        alarmCalender.set(Calendar.MILLISECOND,0);
     

       

       long A_Week_MILLISECOND_TIME = 24*60*60* 1000;
     

 

       Intent intent = new Intent(TestSendReciverActivity.this, AllActivity.class);     

       intent.setAction("ACTION.RESTART.PersistentService");

      PendingIntent sender = PendingIntent.getService( TestSendReciverActivity.this , 0 , intent , 0 );     

       AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);    

     

     am.setRepeating(AlarmManager.RTC, alarmCalender.getTimeInMillis(),

     A_Week_MILLISECOND_TIME, sender);

     //   sendBroadcast(new Intent("arabiannight.tistory.com.sendreciver.gogogo"));
                     
     
      }

  });

--------------------------------------------------

TestReceiver.java---------------------------

 

public void onReceive(final Context context, Intent intent) {

String action = intent.getAction();
  Intent i = new Intent( context, AllActivity.class );
  PendingIntent pi = PendingIntent.getActivity(context, 0, i, 0);
  try {
    
   pi.send();
  } catch (CanceledException e) {
           
  e.printStackTrace();
  }
  }

}

 -----------------------------------------
뱅뱅뱅기 (280 포인트) 님이 2013년 5월 30일 질문

1개의 답변

0 추천

브로드캐스트 리시버에서 수신받은 intent 의 유형에 따라 필터링을 하셔야 합니다.

물론 등록할때 일부만 수신받도록 할수도 있지만 디버깅 해보시면 아마 

getAction 으로 받아온 부분이 원하지 않는 경우도 필터링하지 않고 실행하고 있어서 그런걸꺼에요

action 을 디버그모드로 확인하시던가 로그찍어보시면 왜그런지 이해가 되실겁니다.

블랙넥원 (9,600 포인트) 님이 2013년 5월 30일 답변
...