notification 을 띄우고 이걸 클릭시 액티비티를 실행하는데
해당 액티비티에 putExtra로 값을 전달하여 초기화 하려 합니다. 그런데 이게 안되는데 이유를 모르겠네요..
일단 실행되는 액티비티의 코드 입니다.
Bundle bundle = getIntent().getExtras();
boolean isServiceAlive = bundle.getBoolean("SERVICE_ALIVE", false);
이전 액티비티에서 boolean 값을 받아서 초기화합니다.
그런데 nullpointerException 이 뜹니다.. 뜨는 곳을 보니 bundle이 Null이네요 ;;
다음은 Notification을 띄우는 소스입니다.
Intent notiIntent = new Intent(context, ListenActivity.class);
notiIntent.putExtra("SERVICE_ALIVE", true);
notiIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent content = PendingIntent.getActivity(context, 0, notiIntent, 0);
왜 bundle이 Null로 올까요 ;;
putExtra()를 하실때 bundle에 값을 넣지 않고 Intent에 값을 넣어 두셨으니 bundle에서 null이 나오는건 당연한 겁니다.
Intent.putExtra를 하셨으면 Intent.getBoolean()을 해주시는게 맞습니다.
혹은 getIntent().getExtras()를 하시게 될경우 Notification에 데이터를 넣을때
Bundle bundle = new Bundle();
bundle.putBoolean("SERVICE_ALIVE", true);
Intent.putExtras(bundle)
요렇게 하시면 됩니다.
bundle에 값이 없다는건 재대로 넘어가지 않았다는 건데..
굳이 FLAG_ACTIVITY_NEW_TASK 써주고 팬딩인텐트 까지 쓰실 필요가 있을까요?
Intent notiIntent = new Intent(context, ListenActivity.class);
notiIntent.putExtra("SERVICE_ALIVE", true);
notiIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(notiIntent);
이렇게 넘겨줘 보실래요?