Service Intent must be explicit解决方案

06-30 20:06:08.251 6892-6892/com.test.aidl E/AndroidRuntime: FATAL EXCEPTION: main
                                                             Process: com.test.aidl, PID: 6892
                                                             java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test.aidl/com.test.aidl.MainActivity}: java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.example.calculate.CalculateService (has extras) }
                                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2421)
                                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481)
                                                                 at android.app.ActivityThread.access$900(ActivityThread.java:153)
                                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349)
                                                                 at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                 at android.os.Looper.loop(Looper.java:148)
                                                                 at android.app.ActivityThread.main(ActivityThread.java:5432)
                                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:735)
                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
                                                              Caused by: java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.example.calculate.CalculateService (has extras) }
                                                                 at android.app.ContextImpl.validateServiceIntent(ContextImpl.java:1209)
                                                                 at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1308)
                                                                 at android.app.ContextImpl.bindService(ContextImpl.java:1286)
                                                                 at android.content.ContextWrapper.bindService(ContextWrapper.java:604)
                                                                 at com.test.aidl.MainActivity.onCreate(MainActivity.java:53)
                                                                 at android.app.Activity.performCreate(Activity.java:6303)
                                                                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
                                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2374)
                                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481) 
                                                                 at android.app.ActivityThread.access$900(ActivityThread.java:153) 
                                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349) 
                                                                 at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                 at android.os.Looper.loop(Looper.java:148) 
                                                                 at android.app.ActivityThread.main(ActivityThread.java:5432) 
                                                                 at java.lang.reflect.Method.invoke(Native Method) 
                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:735) 
                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 

Android 5.0程序service必须显式调用,否则就会报出上面异常信息:Service Intent must be explicit
解决办法有两个,如下所示:


1、设置Action和packageName:
参考代码如下:

Intent mIntent = new Intent();
mIntent.setAction("XXX.XXX.XXX");//你定义的service的action
mIntent.setPackage("xxxxxxx");//这里你需要设置你应用的包名
context.startService(mIntent);

2、将隐式启动转换为显示启动:

Intent intent = new Intent(context, IService.class);
context.startService(eintent);

如有错误欢迎指出来,一起学习。
在这里插入图片描述

你可能感兴趣的:(android基础知识)