Service Intent must be explicit
2016-11-25 本文已影响17人
于阗
Intent intent = new Intent();
intent.setAction("xxx");
startService(intent);
有些时候我们使用Service的时需要采用隐私启动的方式,但是Android 5.0一出来后,其中有个特性就是Service Intent must be explitict,也就是说从Lollipop开始,service服务必须采用显示方式启动。
解决办法
1、参考代码如下:
Intent mIntent = new Intent();
mIntent.setAction("XXX.XXX.XXX");//你定义的service的actionmIntent.setPackage(getPackageName());//这里你需要设置你应用的包名context.startService(mIntent);
2、将隐式启动转换为显示启动:--参考地址:http://stackoverflow.com/a/26318757/1446466
Intent mIntent = new Intent();
mIntent.setAction("XXX.XXX.XXX");
Intent eintent = new Intent(getExplicitIntent(mContext,mIntent));
context.startService(eintent);