美文网首页
Android-判断服务是否正在运行(Accessibility

Android-判断服务是否正在运行(Accessibility

作者: eoser | 来源:发表于2021-03-26 17:24 被阅读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)
            }
        }
    

    相关文章

      网友评论

          本文标题:Android-判断服务是否正在运行(Accessibility

          本文链接:https://www.haomeiwen.com/subject/cbxshltx.html