Servicio de accesibilidad de Android detectar notificación

Intento que mi aplicación detecte cada vez que se muestra una notificación. Lo he habilitado en la aplicación de configuración y se llama onServiceConnected , sin embargo, cuando creo una notificación o recibo un correo electrónico a través de la aplicación de Gmail no ocurre nada, no se llama a onAccessibilityEvent .

Android manifiesto:

                     

NotificationService.java

 package com.test.slide; import android.accessibilityservice.AccessibilityService; import android.accessibilityservice.AccessibilityServiceInfo; import android.view.accessibility.AccessibilityEvent; public class NotificationService extends AccessibilityService { @Override public void onAccessibilityEvent(AccessibilityEvent event) { System.out.println("onAccessibilityEvent"); if (event.getEventType() == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) { System.out.println("notification: " + event.getText()); } } @Override protected void onServiceConnected() { System.out.println("onServiceConnected"); AccessibilityServiceInfo info = new AccessibilityServiceInfo(); info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED; info.notificationTimeout = 100; info.feedbackType = AccessibilityEvent.TYPES_ALL_MASK; setServiceInfo(info); } @Override public void onInterrupt() { System.out.println("onInterrupt"); } } 

Gracias por cualquier ayuda.

Los servicios de accesibilidad en Android 4.0 y posteriores pueden comportarse de manera extraña si no hay una etiqueta de metadatos de servicio de accesibilidad definida en el manifiesto. Intente definir los metadatos como en los ejemplos a continuación. Debería seguir utilizando setServiceInfo () para mantener la compatibilidad con dispositivos anteriores a 4.0.

Además, recomendaría especificar un tipo de comentarios que sea específico de su servicio, en lugar de usar “todos”.

AndroidManifest.xml

        

res / xml / accessibilityservice.xml

 < ?xml version="1.0" encoding="utf-8"?>  

Hubo un error en su FeedbackType. Corregido a continuación. Aún así, considere usar un tipo de comentarios más específico.

NotificationService.java

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

La aplicación que usa AccessibilityService necesitaba tener un permiso desde Configuración> Accesibilidad para acceder a los eventos del sistema. Permitir permiso desde la configuración. Esto puede funcionar

revisa este enlace

el servicio de accesibilidad no se inició