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

alarmmanager로 실행한 PendingIntent 문의

0 추천

각각의 알람ID를 다르게 하여 진행중에 있습니다.

해당시간이 되면 알람이 울리는데요.

	private void setAlarm(int alarmId,int h,int m){
		Intent intent = new Intent(ServiceClass.this,NotiBroadcast.class);
		PendingIntent sender = PendingIntent.getBroadcast(mContext, alarmId, intent, PendingIntent.FLAG_CANCEL_CURRENT);
		mManager = (AlarmManager)getSystemService(ALARM_SERVICE);
		
	
		Calendar calendar = Calendar.getInstance();
		
		calendar.set(Calendar.HOUR_OF_DAY, h);
        calendar.set(Calendar.MINUTE, m);
        calendar.set(Calendar.SECOND, 0);
        
        Log.e(TAG, "추가전: "+alarmId +"|| 알람 설정 시간 : " + calendar.getTime().toString());
      
        if(calendar.before(Calendar.getInstance())){
        	calendar.add(Calendar.DATE, 1);
        }
                
        mManager = (AlarmManager)getSystemService(ALARM_SERVICE);
		//알람 시간
        long oneday = 24 * 60 * 60 * 1000;// 24시간
        
        mManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), oneday, sender);
     	Log.e(TAG, "해당 알람번호 : "+alarmId +"|| 알람 설정 시간 : " + calendar.getTime().toString());
	}

 

해당시간이되면 INENT를 통해 NotiBroadcast 브로드캐스트가 실행이 됩니다.

이후 INTENT로 아래와 같이 Intent를 통해서 alarmreceiver가 실행이 되게 했습니다.

그런데 알람1로 인하여 alarmreceiver.activity가 실행이 된 상태에서 

알람2가 울려서 NotiBroadcast로 들어와서 로그캣에 앱동작// 블루투스 연결X까지는 들어오는데

intent가 실행이 되지 않습니다.

public class NotiBroadcast extends BroadcastReceiver {
	@Override
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub		
		if(SharedPreferenceUtil.getSharedPreference(context, "alarm_state") !=null && SharedPreferenceUtil.getSharedPreference(context , "alarm_state").equals("on")){
			if(BluetoothService.check_mState!=3){	//연결 안되었을때
				Log.d("NotiBroadcast()","앱 동작O//블루투스 연결 X");

				Intent i = new Intent(context, alarmReceiver.class);
				i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
				context.startActivity(i);
			}else{
				Log.d("NotiBroadcast()","앱 동작O//블루투스 연결 O");
			}
		}else{
			Log.d("NotiBroadcast()","노티피케이션이 켜져있지 않을 경우 ");
		}
	}
}

alarmreceiver의 매니페스트

     <activity android:name="alarmReceiver"
               android:launchMode="singleTask"
               android:clearTaskOnLaunch="true" 
               android:screenOrientation="portrait"
               android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
     </activity>

notibroadcast의 매니페스트

   		<receiver 
	        android:name=".NotiBroadcast" 
   		    android:exported="false" >
        </receiver>

 

기존 진행중인 동일한 액티비티가 있으면 Intent 플래그로 될거같았는데 동작이 먹히지가 않네요..

도움 부탁드립니다.

쿠쿠부다스 (6,470 포인트) 님이 2017년 3월 21일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...