[Android] 롤리팝 bindService 명시적으로 하기 (java.lang.IllegalArgumentException: Service Intent must be explicit)
[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);