【问题标题】:Android Accessibility onAccessibilityEvent not received in jelly bean果冻豆中未收到Android Accessibility onAccessibilityEvent
【发布时间】:2013-06-08 00:19:17
【问题描述】:

我正在尝试使用 Jelly bean(Android 版本 4.1.1)在 Android 手机上接收辅助功能事件。

我已经看到几个问题解决了这个问题(特别是关于 JB 和 pre JB 之间的兼容性):

Android accessibility service detect notification

AccessibilityService is started but does not receive AccessibilityEvents on JellyBean

Android accessibility service

Android accessibility service backwards compatibility and jelly bean

根据所有这些问题(特别是最后一个问题),如果我不想确保向后兼容性,我需要做的就是添加该行

android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"

在我的清单文件中并包含 xml 配置文件。

我这样做了,但是当通知栏中发布通知时,我仍然无法收到 onAccessibilityEvent 通知。 这是我的代码

public class NotificationService extends AccessibilityService {

private static final Logger logger = LoggerFactory.getLogger ("NotificationService");

@Override
public void onCreate()
{
    super.onCreate();
    logger.trace ("onCreate");
}

@Override
public void onDestroy()
{
    super.onDestroy();
    logger.trace ("onDestroy");
}

@Override
protected void onServiceConnected() {
    logger.trace("onServiceConnected");
    AccessibilityServiceInfo info = new AccessibilityServiceInfo();
    info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED;
        info.feedbackType = AccessibilityServiceInfo.FEEDBACK_ALL_MASK;
    info.notificationTimeout = 100;
    setServiceInfo(info);
}

@Override
public void onInterrupt() {
    // TODO Auto-generated method stub
}

@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
    logger.trace("onAccessibilityEvent");


    if (event.getEventType() == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) {
        logger.info("notification: " + event.getText());
    }

}

}

这是我在清单文件中声明服务的方式

<service android:name=".NotificationService"
         android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
    <intent-filter>
        <action android:name="android.accessibilityservice.AccessibilityService" />
    </intent-filter>
    <meta-data android:name="android.accessibilityservice"
               android:resource="@xml/accessibilityservice" />
</service>

这是我的accessibilityservice.xml

<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://Schemas.android.com/apk/res/android"
    android:accessibilityEventTypes="typeNotificationStateChanged"
    android:accessibilityFeedbackType="feedbackAllMask"
    android:notificationTimeout="100" />

当我运行我的应用程序时,我可以看到服务已创建并连接,但没有收到 AccessibilityEvents。

谢谢!

【问题讨论】:

    标签: android accessibility android-4.2-jelly-bean


    【解决方案1】:

    这在 Android 4.1.1 上对我有用,但在 Android 4.2(Jelly Bean) 上失败了。您还必须添加一个 value-v17 文件夹来说明 SDK 更改。检查这个解决方案https://stackoverflow.com/a/12042493/1179638

    【讨论】:

      【解决方案2】:

      我和你有同样的问题,请试试这个方法。在意图过滤器中添加&lt;category android:name="android.accessibilityservice.category.FEEDBACK_SPOKEN" /&gt;

      AccessibilityService is started but does not receive AccessibilityEvents on JellyBean

      【讨论】:

        猜你喜欢
        • 2013-05-21
        • 2012-09-23
        • 1970-01-01
        • 2013-02-12
        • 2012-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-09
        相关资源
        最近更新 更多