微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AccessibilityManager 未启用但通过 If 语句

如何解决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,但还有其他无障碍服务。

AccessibilityManager#isTouchExplorationEnabled() 应结合使用以检查 TalkBack。

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

无障碍管理器可能在 TalkBack 未打开的情况下返回启用状态的原因是其他无障碍服务可能正在运行。一些应用程序利用无障碍服务来实现其他功能,甚至启用无障碍服务并不明显。例如,LastPass 有一项无障碍服务,用于为与最新自动填充 API 不兼容的旧设备预填充密码。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。