Android辅助功能AccessibilityService监听当前包名变化
Posted 废墟的树
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android辅助功能AccessibilityService监听当前包名变化相关的知识,希望对你有一定的参考价值。
1.继承系统的AccessibilityService服务,实现自己的辅助功能服务
class MyAccessibilityService: AccessibilityService()
companion object
const val TAG = "MyAccessibilityService"
override fun onAccessibilityEvent(event: AccessibilityEvent)
val eventType = event.eventType
if (eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED)
val pkgName = event.packageName?.toString()
val className = event.className?.toString()
println("[$TAG] 当前应用包名:$pkgName 类名:className:$className")
override fun onInterrupt()
override fun onServiceConnected()
super.onServiceConnected()
///可以在这里地方来监听辅助功能开关开启成功,在这里发送一个广播,在外面接收
println("[$TAG] 辅助功能开启成功")
2.在androidManifest.xml里面注册服务
<service
android:name=".MyAccessibilityService"
android:label="@string/accesibility_title"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService"/>
</intent-filter>
<meta-data
android:name="android.accessibilityservice"
android:resource="@xml/accessibility_service_config"/>
</service>
注意点:
1.label字段:辅助功能名称,该名称会显示在系统的设置里面
2.必须要设置 android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"权限
3.必须要设置
4.必须设置
5.需要在value/xml目录下面新建一个辅助功能配置 accessibility_service_config.xml
代码如下:
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeWindowStateChanged"
android:accessibilityFeedbackType="feedbackGeneric"
android:accessibilityFlags="flagReportViewIds"
android:description="@string/accessibility_service_description"
android:notificationTimeout="100" />
解释:
1.android:accessibilityEventTypes监听事件类型
2.android:description开启辅助功能时,设置页面开关处的文案描述
###3.判断辅助功能开关状态
/**
* 判断辅助功能是否已经开启
*/
@JvmStatic
fun isAccessibilitySettingsOn(context: Context): Boolean
var accessibilityEnabled = 0
try
accessibilityEnabled = Settings.Secure.getInt(
context.contentResolver,
Settings.Secure.ACCESSIBILITY_ENABLED
)
catch (e: Settings.SettingNotFoundException)
e.printStackTrace()
if (accessibilityEnabled == 1)
val services = Settings.Secure.getString(
context.contentResolver,
Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES
)
if (services != null)
return services.lowercase(Locale.getDefault()).contains(context.packageName.lowercase(Locale.getDefault()))
return false
4.打开辅助功能
/**
* 引导打开辅助功能设置页面
*/
@JvmStatic
fun openAccessibilitySettingPage(context: Context)
val intent = Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS)
if (context !is Activity)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(intent)
以上是关于Android辅助功能AccessibilityService监听当前包名变化的主要内容,如果未能解决你的问题,请参考以下文章
Android辅助功能AccessibilityService的使用
Android辅助功能AccessibilityService的使用