起因
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)
}
}