Android5.0隐式启动服务
Posted study_zhxu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android5.0隐式启动服务相关的知识,希望对你有一定的参考价值。
android5.0隐式启动服务
在Android 5.0中系统禁止我们通过隐式意图启动service,如果通过隐式意图启动会报异常,所以需要通过显式意图启动service,如果要被启动的服务在本应用中,还可以通过显式意图启动,但是如果是要启动其他应用的service,那么如何通过显式意图来启动呢?下面介绍一个方法用于通过显示意图启动其他应用中的service
public static Intent getExplicitIntent(Context context, Intent implicitIntent)
PackageManager pm = context.getPackageManager();
// 返回给定条件的所有ResolveInfo对象(本质上是Service)
List<ResolveInfo> resolveInfo = pm.queryIntentServices(implicitIntent, 0);
// 确保只有一个service匹配
if (resolveInfo == null || resolveInfo.size() != 1)
return null;
//获取component信息并创建ComponentName
ResolveInfo serviceInfo = resolveInfo.get(0);
//获取Service所在的包名
String packageName = serviceInfo.serviceInfo.packageName;
//获取Service的名称
String className = serviceInfo.serviceInfo.name;
// 通过包名和service的类名创建component
//ComponentName用于指定打开其他应用的activity和service
ComponentName component = new ComponentName(packageName, className);
// 创建新的intent
Intent explicitIntent = new Intent(implicitIntent);
// 为intent设置指定的组件
explicitIntent.setComponent(component);
return explicitIntent;
通过该方法可以实现显式意图启动其他应用中的service
QQ交流群
微信公众号:Android在路上,欢迎关注
以上是关于Android5.0隐式启动服务的主要内容,如果未能解决你的问题,请参考以下文章
android 在5.0以后不允许使用隐式Intent方式来启动Service
WifiManager:Android 5.0.2 中的频道连接丢失并重新启动