【问题标题】:Android - Preventing TalkBack to read the application Name and current OrientationAndroid - 阻止 TalkBack 读取应用程序名称和当前方向
【发布时间】:2020-12-28 20:43:31
【问题描述】:

问题是我在Activity启动时使用TTS读取长字符串消息,但是TalkBack会自动读取中间的应用程序名称并剪切长字符串,非常烦人。

我想在每次启动活动时禁用 TalkBack 读取应用程序名称。删除其 android:label 属性不是一个可行的解决方案,因为该应用程序由其他人控制,而我无法控制它。

那么,我是否可以调用任何 API 来阻止 TalkBack 功能在启动应用程序时读取应用程序名称?

任何帮助将不胜感激。

非常感谢。

问候, 阿肖克

【问题讨论】:

  • 当你说“应用程序被别人控制”时,你还能在Activity.onCreate()中添加代码吗?
  • 是的。我可以控制 Activity,但不能控制应用程序的清单文件。

标签: android accessibility talkback


【解决方案1】:

解决方案是在 Activity 中覆盖 dispatchPopulateAccessibilityEvent() 以返回 true。这将阻止 Talkback 宣布活动标签。

【讨论】:

  • 你必须返回 false 而不是 true。至少这可以防止 Talkback 宣布我的应用程序名称
【解决方案2】:

你应该把它添加到 AndroidManifest.xml

<activity
            android:name="com.mobile.myapp.test"
            android:label="About"
            android:screenOrientation="portrait" />

如果您不希望 TalkBack 读取活动名称,请将 android:label 留空。

【讨论】:

  • 当标签为空时,使用应用程序名称。
  • 标签应该是空格键 android:label=" "。这种方法对我有用。
【解决方案3】:

但是LauncherActivity的onCreate中的这一行

科特林:

ViewCompat.setImportantForAccessibility(window.decorView,
ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_NO)

Java:

ViewCompat.setImportantForAccessibility(getWindow().getDecorView(),
ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_NO);

这对我有用。

【讨论】:

    【解决方案4】:

    那么,我是否可以调用任何 API 来阻止 TalkBack 功能在启动应用程序时读取应用程序名称?

    我不知道。

    问题是我在Activity启动时使用TTS读取长字符串消息,但是TalkBack会自动读取中间的应用程序名称并剪切长字符串,非常烦人。

    然后稍微延迟你的“长字符串消息”,让 TalkBack 有时间进行标准公告。

    【讨论】:

    • 我做了完全一样的,但我想知道是否有任何其他方法来处理这个问题。感谢您的回复。真的很感激。
    【解决方案5】:

    为了防止TalkBack在每次切换Activity时读取应用名称,就是在Manifest中设置Activity的名称(标签):

    <activity
            android:name=".pavlos.myActivity"
            android:label="Pavlos Activity" />
    

    将android:name="" 添加到 Manifest 将停止 TalkBack 在您每次切换活动时宣布应用程序的名称。

    【讨论】:

      【解决方案6】:

      在我的例子中,应用名称被 TalkBack 误读。 我通过更正 strings.xml 文件中的字符串名称来解决这个问题。

      <resources>
        <string name="app_name">Your App Name</string>
      </resources>
      

      我之前有一个没有空格的名字。

      <resources>
        <string name="app_name">YourAppName</string>
      </resources>
      

      我希望如果你只是把它留空或留有空间,你会得到你想要的效果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-17
        • 2012-07-12
        • 2015-09-16
        • 1970-01-01
        • 2013-06-25
        • 1970-01-01
        • 2010-11-24
        相关资源
        最近更新 更多