AccessibilityService is started but does not receive AccessibilityEvents on JellyBean

后端 未结 2 784
野性不改
野性不改 2020-12-05 01:20

I have a AccessibilityService that shall read out any incoming notification. It does work fine with ICS and below, but stopped working with JB.

Below are the Manifes

相关标签:
2条回答
  • 2020-12-05 01:50

    I experienced this problem in Android 4.1.1. The accessibility service didn't receive events until I disabled and re-enabled the accessibility service.

    To fix the problem, I defined the accessibility service parameters in both setServiceInfo() and accessibilityservice.xml.

    In my case, there was no need to define two different Android-version-dependent accessibility services.

    0 讨论(0)
  • 2020-12-05 02:02

    This is the way I got it to work:

    1. Subclass the service class so there are 2 versions of it.

    2. Have a bools.xml file in the res/values directory and also one in the res/values-v16 directory

    3. Have a is_jelly_bean boolean set to true in v16 and a is_not_jelly_bean in the res/values directory version

    4. In the manifest have something like this

      <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>
      

    Have an accessibility service xml file in the res/xml directory call accessibilityservice.xml

    In it have something like this:

    <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" />
    
    0 讨论(0)
提交回复
热议问题