크리에이티브 커먼즈 라이선스
Creative Commons License

[Android] bindService 명시적으로 보내기


안드로이드 SDK 버전 21 (롤리팝) 부터 bindService를 암시적으로 보내게 되면 아래와 같은 오류가 뜨면서 앱 중지가 발생한다.


E/AndroidRuntime(30479): Process: com.lguplus.emotionguitestapp, PID: 30479

E/AndroidRuntime(30479): java.lang.RuntimeException: Unable to start activity 

E/AndroidRuntime(30479): Caused by: java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.lguplus.emotiongui.service }

E/AndroidRuntime(30479): at android.app.ContextImpl.validateServiceIntent(ContextImpl.java:2039)

E/AndroidRuntime(30479): at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:2147)

E/AndroidRuntime(30479): at android.app.ContextImpl.bindService(ContextImpl.java:2125)

E/AndroidRuntime(30479): at android.content.ContextWrapper.bindService(ContextWrapper.java:559)


내용인 즉 서비스를 명시 해라!! 


예로 "com.kkomanjell.app" 에 service 를 intent로 날릴때 

롤리팝 이전에는 아래처럼 날려도 문제가 되지 않았다.


Intent intent = new Intent().setAction("com.kkomanjell.app.service");

activity.bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);



하지만 롤리팝 이후 부터는 반드시 문제가 발생한다.

아래 처럼 타겟이 무엇인지 명시를 해줘야 문제가 발생하지 않는다.


Intent intent = new Intent().setAction("com.kkomanjell.app.service");

intent.setPackage("com.kkomanjell.app");

activity.bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);




저작자 표시 비영리 변경 금지
신고

+ Recent posts

티스토리 툴바