안드로이드 개발 질문/답변
(글 수 45,052)
위에 그림과 같이 여러 notification이 뛰어졌고 각각 다른 값을 가지고 액티비티를 띄울려고하는데
계속 처음에 입력된 Intent 값으로 띄어집니다..ㅠㅠ
Notification을 여러개 띄우고 하나하나마다 다른 값을 Intent를 통해 다른 액티비트를 띄우고 싶습니다
public void addNotification(String content,long notifyId)
{
Intent intent = new Intent(this,ToastMemo.class);
intent.putExtra(MemoVar.KEY_MEMOID,notifyId);
String nofityMessage;
if(content.length() > 10)
{
nofityMessage = content.substring(0, 9)+"...";
}
else
{
nofityMessage = content;
}
Notification notify = new Notification();
notify.icon = R.drawable.notify;
notify.tickerText = nofityMessage;
notify.when = System.currentTimeMillis();
PendingIntent intentBack = PendingIntent.getActivity(
this, 0,intent, 0);
notify.setLatestEventInfo(this, nofityMessage, content, intentBack);
// NotificationManager에 등록//
setNotification((int)notifyId, notify);
}이 위의 함수를 여러번 호출했을때 처음 만들어진 Intent와 그 Extra값만 계속 호출 됩니다..
이 문제를 어떻게 해결해야할까요?
2010.04.08 20:48:54
제가 이해하기로는, 코드상으로 호출하시는 Activity 는 동일한게 아닌가 싶네요. (ToastMemo.class) 그렇다면 이미 ToastMemo가 Launch 되어 있는 상태에서 startActivity 가 호출되어도, intent 가 자동으로 갱신되지는 않습니다. ToastMemo 단에서 onNewIntent API 를 Override 해서 setIntent 를 구현해주셔야만, 새로운 Intent 가 ToastMemo 에 전달될 때, 해당 Intent 를 사용하실 수 있습니다. http://blog.naver.com/huewu/110081205396
2011.12.28 01:31:50
PendingIntent.getActivity(this, 0,intent,0);
여여기의 두번째 인자가 requestCode 입니다. 이걸로 intent를 구별합니다. 이걸 다른 값으로 하면 원하시는대로 하실 수 있을 것입니다. 6개월 전에 한 AlaramManager에서는 잘 되던게 지금은 왜 안될까 3시간 고민하고 해결했습니다. 힘드네요..
2013.04.02 14:07:26
오래된 글이지만 저도 이 문제때문에 고민을 하다 해결하게 되어 다른분이 참조하실 수 있도록 남깁니다..
PendingIntent.getActivity(this, 0,intent,0);를 이용해 다른 액티비티에서
getIntent()로 수신시 Intent로 부터 받은 데이터가 이전 데이터가 계속 남아있게 됩니다.
PendingIntent는 앱이 종료되어도 사라지지 않고 남아있습니다.
그렇기 때문에 3번째 flag argument에 현재의 PendingIntent 데이터를 취소해주셔야 합니다.
아래와 같이..
PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);



