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

receiver에서 activity로 값을 넘기고 싶습니다

0 추천

현재 문자를 수신하면 JSON 파싱하여 특정 값이 일치할 경우

메인액티비티를 호출하여 화면에 띄우고 알람을 시작합니다.

여기서 어플 화면을 띄우면서 문자내용을 textview에 뿌려줄려고 하는데

리시버쪽에서 setText 를 바로 하니깐 어플이 계속 떠있을땐 상관이 없는데

호출을하여 띄울때는 메인쪽에 값이 입력이 안되더군요

 

Intent intentMain = new Intent(context, MainActivity.class);
 
//Intent Flag 관련 추가 예정
intentMain.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
 
PendingIntent pi = PendingIntent.getActivity(context, 0, intentMain, PendingIntent.FLAG_ONE_SHOT);
 
pi.send();
 
현재 이렇게 메인을 호출하는데 문자의 내용은 message라는 String에 담고 있습니다
이 message를 MainActivity로 넘겨줄려면 또 다른 인텐트를 생성해야되는건가요?
TheLastLeaf (210 포인트) 님이 2014년 3월 31일 질문

1개의 답변

+1 추천
MainActivity에서 onNewIntent를 오버라이드해서 넘긴값들을 받아보세요~
whdrb19 (23,520 포인트) 님이 2014년 3월 31일 답변
PendingIntent 윗쪽에 intentMain.putExtra("name", message); 를 추가하고
메인액티비티에서
Intent msg = getIntent();
        Bundle b = msg.getExtras();
       
        if(b!=null)
        {
            message = (String) b.get("name");
            sms_body.setText(message);
            Log.i("INTENT", "message is " + message);
        }
로 리시버가 메인을 호출하면서 화면에 문자 내용을 뿌리는거는
방금 해결하였습니다! 근데 문제는 이게..음..어플이 켜져있을때는
메인액티비티 쪽에서의 동작이 실행되지 않네요
이미 어플이 켜져있어서 호출을 따로 안하는건지..
위에 문제도 해결했습니다
FLAG_ACTIVITY_SINGLE_TOP 때문에 어플이 떠있는 상태에서
계속 재활용이 되어 새로운 값에 대해 업데이트가 안되고 있었네요
제가 정확히 이해한지는 모르겠는데..SINGLE_TOP 지우니 바로 되네요
...