check Overlay
This requires app setup service and grants accessibility permission
Important: android:accessibilityFlags must include flagRetrieveInteractiveWindows.
In App AndroidManifest.xml
<service
android:name=".DwnAccessibilityService"
android:exported="false"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
tools:ignore="AccessibilityPolicy">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
<meta-data
android:name="android.accessibilityservice"
android:resource="@xml/accessibility_service_config" />
</service>
In DwnAccessibilityService
class DwnAccessibilityService : AccessibilityService() {
override fun onAccessibilityEvent(event: AccessibilityEvent?) {
val packageName = event?.packageName?.toString() ?: "unknown"
val eventType = event?.eventType ?: AccessibilityEvent.TYPES_ALL_MASK
val eventTypeString = AccessibilityEvent.eventTypeToString(eventType)
if (eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED ||
eventType == AccessibilityEvent.TYPE_WINDOWS_CHANGED) {
println("DwnAccessibilityService: Event from $packageName: $eventTypeString")
DwnProfilingSDK.checkOverlay(this)
}
}
In accessibility_service_config.xml
<?xml version="1.0" encoding="utf-8"?>
<!--
EventTypes has to include these 2 types "typeWindowStateChanged|typeWindowsChanged"
Flags has to include flagRetrieveInteractiveWindows
-->
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeWindowStateChanged|typeWindowsChanged"
android:accessibilityFeedbackType="feedbackGeneric"
android:accessibilityFlags="flagRetrieveInteractiveWindows"
android:canRetrieveWindowContent="true"
android:notificationTimeout="100" />Content copied to clipboard
Parameters
service
AccessibilityService handler