AccessibilityManager未启用但通过If语句



我不知道我的问题应该用什么标题。我也没有太多的细节,因为这是DV团队告诉我的。我们为反馈添加了一段代码。但不知何故,我们的设计验证团队中有一个人通过了if语句,而没有启用任何可访问性。

这是if语句

if (am != null && am.isEnabled()) {
if(state == 0){
Toast.makeText(getContext(), "announce 0", Toast.LENGTH_LONG )
.show();
} else { 
Toast.makeText(getContext(), "announce" , Toast.LENGTH_LONG )
.show();
}
}

这可能吗?他们想让我解决这个问题,但根本没有什么好解决的。我尝试了5种不同的设备,但它已经固定了。如果不是正常情况,请告诉我。

AccessibilityManager#isEnabled()检查设备上运行的任何可访问性服务。这可能是TalkBack,但还有其他可访问性服务。

accessbilitymanager #isTouchExplorationEnabled()应该组合使用来检查TalkBack

if (am != null && am.isEnabled() && am.isTouchExplorationEnabled()) {
}

无障碍管理器可能返回enabled而没有TalkBack打开的原因是其他无障碍服务可能正在运行。一些应用程序利用可访问性服务来实现其他功能,甚至不明显可访问性服务是否启用。例如,LastPass有一个可访问性服务,用于为不兼容最新自动填充api的旧设备预填充密码。

最新更新