총 게시물 38,868건, 최근 3 건 안내 RSS 글쓰기
이전글  다음글  목록 글쓰기
[안드로이드]

getIntent().getExtras() 질문입니다.

글쓴이 : 한신IT타워 날짜 : 2017-11-13 (월) 17:14 조회 : 288
글주소 : http://www.androidside.com/B49/168775
 
  앱 전문 포커스엠
앱 포커스엠, APP마케팅 성공 솔루션, No.1 모바일마케팅플랫폼
www.focusm.kr
  노티플러스 알림바 SDK광고
앱 알림바 SDK 탑제하면 매달 300만원 추가 수익!
notiplus.co.kr
  메이드스퀘어 모바일 앱 제작
저렴한 모바일 앱제작,하이브리드,블로그앱, 쇼핑몰 솔루션, 이미지 푸시, 견적문의
madesquare.co.kr
신청하기


안드로이드, 자바 그리고 다양한 질문에 대해 성실히 답해드립니다. Q&A Jang

앱이 백그라운드나 죽어있을 때 푸시를 받습니다

노티를 눌러서 앱에 진입하면

onCreate 나 onNewIntent 를 타게되어

그곳에서 각각 getIntent().getExtras() 를 통해서 데이터를 받는데요.. 아래 소스 봐주세요.

얘는 onCreate
        Bundle bundle = getIntent().getExtras();

if (bundle != null) {
mAddress = bundle.get("targetUrl").toString();
}


얘는 onNewIntent

@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Log.e("MainActivity", "onNewIntent");
Bundle bundle = intent.getExtras();
if (bundle != null) {
Log.e("onNewIntent", "적당히하자: " + bundle.get("targetUrl").toString());
mAddress = bundle.get("targetUrl").toString();
}
}
이렇게 돼있는데요..
특정 단말에서 이상한 증상이 발생합니다.

정상적인 코드로 보이는데요.. lg g6에서 저 코드 적용 후 앱 설치 하고 종료하고
다시 터치해서 실행하면 이렇게 nullPointer 에러가 납니다 ㅡㅡ;;

11-13 17:11:10.385 26724-26724/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                   Process: com.neonex.nsok, PID: 26724
                                                   java.lang.RuntimeException: Unable to start activity ComponentInfo{com.neonex.nsok/com.neonex.nsok.activity.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2750)
                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2811)
                                                       at android.app.ActivityThread.-wrap12(ActivityThread.java)
                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1528)
                                                       at android.os.Handler.dispatchMessage(Handler.java:102)
                                                       at android.os.Looper.loop(Looper.java:154)
                                                       at android.app.ActivityThread.main(ActivityThread.java:6316)
                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)
                                                    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
                                                       at com.neonex.nsok.activity.MainActivity.onCreate(MainActivity.java:74)
                                                       at android.app.Activity.performCreate(Activity.java:6757)
                                                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2703)
                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2811) 
                                                       at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1528) 
                                                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                       at android.os.Looper.loop(Looper.java:154) 
                                                       at android.app.ActivityThread.main(ActivityThread.java:6316) 
                                                       at java.lang.reflect.Method.invoke(Native Method) 
                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872) 
                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762) 

at com.neonex.nsok.activity.MainActivity.onCreate(MainActivity.java:74)
이 부분이 저 위에 onCreate 부분입니다.
if 문을 타고 안에 들어가서 죽습니다..;;
돌아버리겠네요..




김윤승
질문자가 자신의 포인트 20 점을 걸었습니다.
답변하시면 포인트 2을, 답변이 채택되면 포인트 16을 드립니다.

질문답변 게시판에서 궁금한 사항을 해결하셨다면, 애써 답변해주신 분께 잘 되었다고 따뜻한 댓글 한마디 남겨주세요.
그리고 답변해주신 분의 글을 '추천' 해주세요.
추천받으신 분에게 1포인트가, 추천하신 분에게도 1포인트가 적립됩니다. ^^

안사 이쁜이 2017-11-13 (월) 17:14
축하드립니다. ;)
한신IT타워님은 안사 이쁜이에 당첨되어 2 포인트 지급되었습니다.
OSKiller 2017-11-13 (월) 17:32
번들에 뭐가 들어 있는지 모르면 
번들에서 keyset을 꺼내서 키와 벨류를 같이 찍어 보세요

댓글주소 추천 0 반대 0
     
     
한신IT타워 2017-11-13 (월) 17:42
[@OSKiller]제가 지금 테스트를 해보니까 안드로이드 6.0 이상 단말에서는 다 저 문제가 발생하네요..

getIntent().getExtras() 안에 값을 꺼내 올 때 따로 null 체크 하는 방법이 있나요..?ㅠㅠ
댓글주소 추천 0 반대 0
OSKiller 2017-11-13 (월) 17:45
그니까 있을지 없을지도 모르는 키로 값을 꺼내지 말고
아예 keyset을 꺼내시라니까요....
그럼 번들에 있는 모든 key리스트를 가지고 null이 아닌 값을들 꺼낼수 있으니까요
댓글주소 추천 0 반대 0
     
     
한신IT타워 2017-11-13 (월) 18:17
[@OSKiller] 아 이해했어요.ㅋㅋㅋ 답답하게 해서 죄송요

근데 키셋 첨 꺼내봤는데 키값들만 나오는거같더라구요 맞나요?

그래서 이터레이터 돌려서 키값이 있으면 그때 다시 번들에서 get 하는 식으로 했는데요..

이터레이터 돌리면서 그 키값의 벨류를 꺼낼 수는 없죠?



댓글주소 추천 0 반대 0
OSKiller 2017-11-13 (월) 18:24
어차피 해당 코드는 보통 디버그용으로 쓰는거니까 어떻게 쓰던 상관 없을텐데요
값이 어떻게 오는지 알면 굳이 키셋을 꺼내서 쓸필요도 없지요ㄷㄷㄷ
댓글주소 추천 0 반대 0
이전글  다음글  목록 글쓰기

 


Copyright ⓒ www.androidside.com. All rights reserved.
채팅 권한: 글쓰기 1개
2레벨 이상만 대화 가능
공개 채팅: 평일 !(9시 ~ 17시),토,일
안사2 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기