android5.0 service出现 java.lang.IllegalArgumentException: Service Intent must be explicit异常

问题描述:

java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.xk.file.FIRST_SERVICE }

Service启动的方式有两种:显式启动、隐式启动。
1、隐式启动
在AndroidManifest.xml注册时需要添加指定的action。

 <service android:name=".service">  
    <intent-filer>  
         <action android:name="com.android.service"/>  
      <intent-filer>  
</service>  

代码中调用时采用:

 Intent serviceIntent=new Intent();
 serviceIntent.setAction("com.android.service");

2、显示启动
如果在同一个包中。两者都可以用。在不同包时。只能用隐式启动。

Intent serviceIntent=new Intent(this,service.class);
startService(serviceIntent);

但是在安卓5.0时候,采用隐式启动时,会出现java.lang.IllegalArgumentException: Service Intent must be explicit异常。也就是说Service的Intent必须明确。
解决方法就是给Intent设置一下具体的包名,指明具体是哪个包启动的Service。
例如:

Intent serviceIntent=new Intent();
serviceIntent.setPackage("com.android.vending")
serviceIntent.setAction("com.android.service");
startService(serviceIntent);

猜你喜欢

转载自blog.csdn.net/xk7298/article/details/81589409
今日推荐