Service Intent must be explicit: Intent 解決
阿新 • • 發佈:2018-12-12
java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.google.android.gms.analytics.service.START (has extras) }
在Activity中啟動Service的時候報錯: 服務意圖必須是顯性宣告。 這是為了防止造成衝突(i.e. 有多個Service用同樣的intent-filter的情況)
這是Android 5.0 (Lollipop) 之後的規定。 不能用包名的方式定義Service Intent, 而要用顯性宣告: new Intent(context, xxxService.class);
詳細介紹可以看stackoverflow上的介紹。
解決辦法如下:
1、通過顯示意圖啟動Service(直接用類名);
- Intent intent = new Intent(com.yulore.test.AppService.class);
- context.startService(intent);
2、如果想繼續使用隱式意圖的話,加上包名資訊即可;
- Intent intent = new Intent();
- intent.setAction("com.yulore.recognize.android");
- intent.setPackage(context.getPackageName()); //相容Android 5.0
- context.startService(intent);
參考:
http://blog.csdn.net/shenzhonglaoxu/article/details/42675287
https://my.oschina.net/u/269663/blog/396826
http://blog.csdn.net/redarmy_chen/article/details/47832615
http://blog.csdn.net/ouyang_peng/article/details/50727693
http://blog.csdn.net/top_code/article/details/45719919