androidkotlinaccessibilitytalkback

How to override Accessibility class name


I want to prevent Talkback from announcing class name for Button view. To do so I wrote following logic but it doesn't work

fun setAccessibilityDelegate(view: Button?) {
    view?.setAccessibilityDelegate(object : View.AccessibilityDelegate() {
        override fun onInitializeAccessibilityNodeInfo(host: View?, info: AccessibilityNodeInfo?) {
            super.onInitializeAccessibilityNodeInfo(host, info)
            info?.contentDescription = getContentDesStartWatching()
            info?.className = ""
        }
    })
}

Actual description: "start watching button, Button double tap to activate"

Expected description: "start watching button, double tap to activate"

Note: cannot change the content description to "start watching" as it is getting retrieved from backend


Solution

  • This worked for me, used AccessibilityDelegateCompat instead of AccessibilityDelegate

    Kotlin code:

    fun setAccessibilityDelegate(view: View) {
        ViewCompat.setAccessibilityDelegate(view, object: AccessibilityDelegateCompat() {
            override fun onInitializeAccessibilityNodeInfo(host:View,
                                                           info: AccessibilityNodeInfoCompat) {
                super.onInitializeAccessibilityNodeInfo(host, info)
                info.className = null
                info.contentDescription = getContentDesStartWatching()
            }
        })
    }