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

노티피케이션 버튼 브로드캐스트 질문

0 추천
제가 앱을구현하고있는데 메인액티비티에서 앱안에있는 버튼을누르면 노티피케이션을 띄우고

거기안에 버튼을 하나만들었는데요 그버튼을누를때마다 a,b이렇게 이벤트를 번갈아가면서 실행하고싶은데

버튼을누를때마다 브로드캐스트가 새로실행되서 제가 브로드캐스트에서 작성한코드가 실행이안되는데

노티에 있는 버튼을 누를때 기존에 실행된 브로드캐스트를 불러오는 방법이없을까요?

쉽게말하면 블루라이트 차단스크린처럼 한번누르면 a 다시누르면 b 이런식으로요

답변해주시면 감사하겠습니다
우훗 (150 포인트) 님이 2015년 8월 31일 질문

1개의 답변

+1 추천
조금 더 구체적인 설명이 필요할것 같습니다.

Activity 내에서 BroadcastReceiver를 구현 하고, Notification을 띄운 후, Activity를 종료했고,

Notification 터치시 Activity가 새로 실행되도록 되어있다면

BroadcastReceiver는 동작이 안되는게 당연합니다.

BroadcastReciver를 Service에서 구현하신 후,

Activity가 실행돼야 할 때 startActivity를 호출하실 때 Intent에 동작해야할 조건을 설정해주시면 되지 않을까요 ?
음무 (17,820 포인트) 님이 2015년 9월 1일 답변
제가 초보이고해서 잘모르겠네요 ㅠㅠ
제가 구현한소스는 대충 이런데
메인액티비티:
 case R.id.B4:
                Intent activityIntent = new Intent(getApplicationContext(), MainActivity.class);
                Intent stIntent = new Intent("action1");
                Intent exIntent = new Intent("action2");
                stIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK );
                exIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                PendingIntent content = PendingIntent.getActivity(getApplicationContext(), 0, activityIntent, 0);
                PendingIntent stcontent = PendingIntent.getBroadcast(getApplicationContext(), 0, stIntent, 0);
                PendingIntent excontent = PendingIntent.getBroadcast(getApplicationContext(), 0, exIntent, 0);
                mNoti = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
                Notification notification = new Notification(R.drawable.ic_launcher, "", System.currentTimeMillis());
                notification.defaults |= Notification.DEFAULT_VIBRATE;
                notification.flags = Notification.FLAG_ONGOING_EVENT;
                RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.noti);
                remoteViews.setOnClickPendingIntent(R.id.st, stcontent);
                remoteViews.setOnClickPendingIntent(R.id.exit, excontent);
                notification.contentView = remoteViews;
                notification.contentIntent = content;
                mNoti.notify(1, notification);
                break;
브로드캐스트:
public class Timer extends BroadcastReceiver {
    int a = 0;
    public void onReceive(Context context, Intent intent) {
        if(a == 0) {
 //1
            a++;
        }
        else
        {
//2
            a--;
        }
            }
        }
이렇게 소스를짯는데요 노티피케이션상에서 버튼을누르면 제가 설정한 브로드캐스트가 처음은 잘실행은됩니다 근데 그게 버튼을 누를때마다 브로드캐스트가 새로생기는건지 그냥 첫번째 if ( a==0) 이문장안에있는 내용 1만 중복되서 누를때마다
계속 실행이됩니다
제가원한건 버튼을한번누르면1, 다음번엔 2 이렇게 번갈아가는식인데말이죠..
제가초보라서 잘모르고 그래서 이상해도 이해좀 해주시길..
...