侧边栏壁纸
博主头像
Eoser's page! 博主等级

@学习@生活@自己

  • 累计撰写 114 篇文章
  • 累计创建 29 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Android-判断服务是否正在运行(AccessibilityService是否启动)

eoser
2023-03-23 / 0 评论 / 0 点赞 / 2 阅读 / 0 字

起因

android的辅助服务AccessibilityService,在启动后如何监听呢?刚开始我搜索了很多文章,都是一个抄一个... 随着Android后台服务越来越多,那些文章里面通过列表来判断段服务是否开启的方法耗时又不准确,没办法,我只能自己去看API,找方法了

找到的API使用原理

1.获取ActivityManager 2.将要查询的服务信息包装成ComponentName 3.通过ActivityManager的getRunningServiceControlPanel获取Intent 4.Intent如果为空,说明服务没有启动

快速判断服务是否启动的方法

以下方法全在Activity中调用的,要在其它地方用或写成工具类,记得传递上下文 Java

private void runHelperService(){
        ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
        ComponentName componentName=new ComponentName("包名","AccessibilityServicee的类名");
        PendingIntent intent = am.getRunningServiceControlPanel(componentName);
        if(intent==null){
            Intent skipIntent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
            skipIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(skipIntent);
        }
    }

Kotlin

private fun runHelperService(){
        val am:ActivityManager= getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
        val cn=ComponentName("包名","AccessibilityServicee的类名")
        val cnr = am.getRunningServiceControlPanel(cn)
        if(cnr==null){
            val intent = Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS)
            intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
            startActivity(intent)
        }
    }
0

评论区