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隐式启动服务的主要内容,如果未能解决你的问题,请参考以下文章

跨应用启动Service并传递数据

android 在5.0以后不允许使用隐式Intent方式来启动Service

Android5.0之Activity的转场动画

WifiManager:Android 5.0.2 中的频道连接丢失并重新启动

Android5.0以上实现对手机屏幕录制并将视频实时保存到本地(亦可实时传输)

Android5.0更新内容简介