Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 可访问性:对讲、网络视图和用户';s地区_Android_Webview - Fatal编程技术网

Android 可访问性:对讲、网络视图和用户';s地区

Android 可访问性:对讲、网络视图和用户';s地区,android,webview,Android,Webview,我开发了一个包含Webview的应用程序。我想让我的应用程序完全可访问,所以对于webview元素,我想让TalkBack以完全可访问的方式读取html元素,如“Heading”、“Banner”、“EditText” 我已经看到WebView中的TTS过程是通过Chromium AccessibilityInputor.java类通过JS注入完成的。这会将此脚本注入到页面中,该页面只包含英文消息。结果是,当设备使用另一种语言时,TTS会以英语读取这些html元素 现在我无法调试或扩展chrom

我开发了一个包含Webview的应用程序。我想让我的应用程序完全可访问,所以对于webview元素,我想让TalkBack以完全可访问的方式读取html元素,如“Heading”、“Banner”、“EditText”

我已经看到WebView中的TTS过程是通过Chromium AccessibilityInputor.java类通过JS注入完成的。这会将此脚本注入到页面中,该页面只包含英文消息。结果是,当设备使用另一种语言时,TTS会以英语读取这些html元素

现在我无法调试或扩展chromium webclient,那么如何根据用户的区域设置使TTS读取我的页面呢


编辑:顺便说一下,我正在使用jQuery Mobile。

以防万一有人碰到这个问题:我不得不应用一个难看的解决方法来克服这个问题。每当我加载一个页面并启用TalkBack时,我都会重新注入包含要读取的文本的javascript变量及其本地化的对应项。例如,对于西班牙语文本:

view.loadUrl("javascript:window.setTimeout(function(){" +
                "window.console.log(\"Injecting messages.\");" +
                "cvox.TestMessages[\"chromevox_input_type_text\"] = {message: \"cuadro de edición\"};" +
                "cvox.TestMessages[\"chromevox_input_type_radio\"] = {message: \"botón de opción\"};" +
                "cvox.TestMessages[\"chromevox_selected\"] = {message: \"seleccionado\"};" +
                "cvox.TestMessages[\"chromevox_unselected\"] = {message: \"no seleccionado\"};" +
                "cvox.TestMessages[\"chromevox_radio_selected_state\"] = {message: \"seleccionado\"};" +
                "cvox.TestMessages[\"chromevox_radio_unselected_state\"] = {message: \"no seleccionado\"};" +
                "cvox.TestMessages[\"chromevox_input_type_submit\"] = {message: \"botón\"};" +
                "cvox.TestMessages[\"chromevox_input_type_button\"] = {message: \"botón\"};" +
                "cvox.TestMessages[\"chromevox_tag_button\"] = {message: \"botón\"};" +
                "}, 2000)");
注意,我在注入变量之前插入了一个超时——这是为了防止在注入之后注入chromevox,从而使解决方案变得无用

我知道这是一个丑陋的补丁,但如果没有访问ChromiumWebView类,我找不到更好的解决方案