Android-判斷服務(wù)是否正在運(yùn)行(AccessibilityService是否啟動(dòng))

起因

android的輔助服務(wù)AccessibilityService,在啟動(dòng)后如何監(jiān)聽呢?剛開始我搜索了很多文章,都是一個(gè)抄一個(gè)...
隨著Android后臺(tái)服務(wù)越來越多,那些文章里面通過列表來判斷段服務(wù)是否開啟的方法耗時(shí)又不準(zhǔn)確,沒辦法,我只能自己去看API,找方法了

找到的API使用原理

1.獲取ActivityManager
2.將要查詢的服務(wù)信息包裝成ComponentName
3.通過ActivityManager的getRunningServiceControlPanel獲取Intent
4.Intent如果為空,說明服務(wù)沒有啟動(dòng)

快速判斷服務(wù)是否啟動(dòng)的方法

以下方法全在Activity中調(diào)用的,要在其它地方用或?qū)懗晒ぞ哳悾浀脗鬟f上下文
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)
        }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容