1

I have tried all the permutations and combinations of the AccessibilityServiceConfig.xml. Here is the code for AccecssibilityService and AccessibilityServiceConfig.xml.

Here is my code:

@Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
    
AccessibilityNodeInfo rootNode = getRootInActiveWindow();

}

@Override
    protected void onServiceConnected(){
        super.onServiceConnected();
         AccessibilityServiceInfo info = new AccessibilityServiceInfo();
        info.eventTypes                 = AccessibilityEvent.TYPES_ALL_MASK;
        info.feedbackType               = AccessibilityServiceInfo.FEEDBACK_SPOKEN;
        info.notificationTimeout        = 1000;
        info.flags                      = AccessibilityServiceInfo.FLAG_REPORT_VIEW_IDS;
        this.setServiceInfo(info);
        Log.e(TAG,"onServiceConnected: ");
    }

AccessibilityServiceConfig.xml:

<?xml version="1.0" encoding="utf-8"?>

    <accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
        android:accessibilityEventTypes="typeWindowsChanged|typeWindowContentChanged|typeViewScrolled"
        android:accessibilityFlags="flagReportViewIds|flagDefault|flagRetrieveInteractiveWindows|flagIncludeNotImportantViews"
        android:canPerformGestures="true"
        android:canRetrieveWindowContent="true"
        android:canRequestFilterKeyEvents="false"
        android:accessibilityFeedbackType="feedbackAllMask"
        android:notificationTimeout="1000"
        android:canRequestEnhancedWebAccessibility="true">
    </accessibility-service>

I have been using Samsung S21 Ultra for testing the app.

1 Answer 1

0

I used Accessibility Service previously one time, so I am sharing my xml and code file(which is working when I checked). I used getRootInActiveWindow() function as follows: accessibility_service.xml

<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:accessibilityEventTypes="typeAllMask"
    android:accessibilityFeedbackType="feedbackAllMask"
    android:notificationTimeout="200"
    android:accessibilityFlags="flagDefault|flagRequestAccessibilityButton|flagIncludeNotImportantViews|flagReportViewIds|flagRetrieveInteractiveWindows|flagRequestFilterKeyEvents"
    android:canRetrieveWindowContent="true"
    android:canRequestFilterKeyEvents="true"
    />

AccessibilityService.java

class MyAccessibilityService extends AccessibilityService {
    public static instance;

    @Override
    public void onServiceConnected() {
        instance = this;
        //Your other code.
    }
    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        AccessibilityNodeInfo info = event.getSource();
        AccessibilityNodeInfo root = instance.getRootInActiveWindow();
        if (root != null) {
            // Do whatever you want with root Node.
            Log.d("NotNull","Root Node is not null");
        }
    }
}

Note: Many times root returns null when you are transitioning between various windows. That's why we are checking for root!=null, but most of the time it is not null.

Not the answer you're looking for? Browse other questions tagged or ask your own question.