首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TalkBack未宣布Android通知

TalkBack未宣布Android通知
EN

Stack Overflow用户
提问于 2015-01-26 15:28:55
回答 2查看 1.7K关注 0票数 1

我的Android应用程序创建了一个通知。通知将正确显示。然而,TalkBack并没有宣布通知,例如,当我收到新的电子邮件时。如果我显示所有通知并滚动它们,TalkBack将读取通知的文本。但是,我希望它在引发通知时自动宣布。

代码语言:javascript
复制
String notificationText = getResources().getString(R.string.notifyText);
String notificationTitle = getResources().getString(R.string.notifyTitle);

NotificationCompat.Builder notificationBuilder =
    new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.ic_notification)
        .setContentTitle(notificationTitle)
        .setContentText(notificationText)
    .setPriority(NotificationCompat.PRIORITY_MAX);

NotificationManager notificationManager =
    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(NOTIFICATION_ID, notificationBuilder.build());
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-02 07:47:20

我找到了我问题的答案。

NotificationCompat.Builder的各种方法中,setContentText()决定视觉显示什么,但是setTicker()是决定TalkBack读取什么(如果有的话)的方法。

票数 2
EN

Stack Overflow用户

发布于 2015-01-26 15:42:16

您很可能需要通知TalkBack,您希望通过使您的应用程序可访问来与其进行交互。关于让应用程序可访问的这是Android文档

还有一个可以启用的视图设置,以便它知道视图对于可访问性非常重要,但是我认为这并不直接适用于通知问题。

代码语言:javascript
复制
android:importantForAccessibility="yes"

您还可以尝试使用AccessibilityEvent,而不是只发送正常的通知(或者两者都发送)。这样,系统就知道事件是专门针对可访问性服务的,并且可能是TalkBack响应的对象。

代码语言:javascript
复制
AccessibilityManager manager = (AccessibilityManager) context
        .getSystemService(Context.ACCESSIBILITY_SERVICE);
if (manager.isEnabled()) {
    AccessibilityEvent e = AccessibilityEvent.obtain();
    e.setEventType(AccessibilityEvent.TYPE_ANNOUNCEMENT);
    e.setClassName(getClass().getName());
    e.setPackageName(context.getPackageName());
    e.getText().add("some text for TalkBalk to announce");
    manager.sendAccessibilityEvent(e);
}

还请记住,某些版本的TalkBalk只在提供View时才会读取文本。

代码语言:javascript
复制
if (manager != null && manager.isEnabled()) {
        final AccessibilityEvent e = AccessibilityEvent.obtain();
        view.onInitializeAccessibilityEvent(e);
        e.getText().add("some text for TalkBak");
        parentView.requestSendAccessibilityEvent(view, e);
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28153233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档