AccessibilityService已启动,但对豆形软糖没有收到AccessibilityEve

2019-06-27 03:32发布

我有一个AccessibilityService是宣读任何来电通知。 它做工精细用ICS和下方,但停止了与JB工作。

下面是清单和代码:

<service
        android:name=".Services.InstantMessengerJb"
        android:enabled="@bool/is_post_jb"
        android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
        tools:ignore="ExportedService" >
        <meta-data
            android:name="android.accessibilityservice"
            android:resource="@xml/accessibility_service_config" />

        <intent-filter>
            <action android:name="android.accessibilityservice.AccessibilityService" />
        </intent-filter>
    </service>

@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
    SettingsClass.logMe(tag, "New event!");
    new AccessibilityProcessing(this, event);
}

@Override
protected void onServiceConnected() {
    if (isInit) {
        return;
    }
    SettingsClass.logMe(tag, "We are connected!");
    AccessibilityServiceInfo info = new AccessibilityServiceInfo();
    info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED;
    info.feedbackType = AccessibilityServiceInfo.FEEDBACK_SPOKEN;
    setServiceInfo(info);
    isInit = true;
}

前面已经说过,它像一个魅力一切preJB-设备的工作,但是在JB的服务启动(我得到的“我们正在连接”),而不是一个单一事件。

这有什么错的代码?

Answer 1:

这是我得到它的工作方式:

  1. 子类服务类,所以有2个版本的它。

  2. 已在水库一个bools.xml文件/目录值,也一个在res /值-V16目录

  3. 在V16一is_jelly_bean布尔值设置为true,并在RES一个is_not_jelly_bean /值目录版本

  4. 在清单中有这样的事情

     <service android:name=".service.MainRunningService" android:enabled="@bool/is_jelly_bean" 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> <service android:name=".service.MainRunningServicePreJellyBean" android:enabled="@bool/is_not_jelly_bean"> <intent-filter > <action android:name="android.accessibilityservice.AccessibilityService" /> </intent-filter> <meta-data android:name="android.accessibilityservice" android:resource="@xml/accessibilityservice" /> </service> 

有在res / xml目录调用accessibilityservice.xml无障碍服务xml文件

在这里面有这样的事情:

<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeNotificationStateChanged"
android:accessibilityFeedbackType="feedbackSpoken"
android:notificationTimeout="100"
android:description="@string/description_that_shows_on_the_accessibility_page" />


Answer 2:

我的Android 4.1.1遇到这个问题。 我重新启用无障碍服务到残疾人和无障碍服务没有收到事件。

要解决这个问题,我在这两个定义的辅助服务参数setServiceInfo()accessibilityservice.xml

在我的情况下,没有必要定义两个不同的Android版本相关的无障碍服务。



文章来源: AccessibilityService is started but does not receive AccessibilityEvents on JellyBean