Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Servicio de accesibilidad de Android detecta notificación

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

Manifiesto de Android:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.test.slide" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15"/> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> <uses-permission android:name="android.permission.GET_TASKS"/> <application android:label="Slide" android:icon="@drawable/ic_launcher" android:theme="@style/AppTheme"> <activity android:name=".Settings" android:label="Slide"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:name=".Tools" android:label="Slide" android:theme="@android:style/Theme.Translucent.NoTitleBar"> </activity> <service android:name=".LocalService"/> <service android:name=".NotificationService" android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE" android:label="Slide" android:enabled="true" android:exported="false"> <intent-filter> <action android:name="android.accessibilityservice.AccessibilityService"/> </intent-filter> </service> </application> 

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.

  • ¿Cómo puedo depurar eficazmente el código C que está envuelto con JNI en Eclipse? (Android Dev)
  • Cómo obtener la miniatura de vídeo de video de youtube en android lista en android
  • SSLHandshakeException: Handshake falló en Android N / 7.0
  • Inicializar las preferencias de XML en la actividad principal
  • Puntero nulo después de capturar la imagen usando la cámara con Android
  • Tiempo de espera de Android GPS
  • 2 Solutions collect form web for “Servicio de accesibilidad de Android detecta notificación”

    Los servicios de accesibilidad en Android 4.0 y superiores pueden comportarse de manera extraña si no hay ninguna etiqueta de meta-datos de accesibilidad definida en el manifiesto. Trate de definir los metadatos como en los ejemplos siguientes. Debe seguir utilizando setServiceInfo () para mantener la compatibilidad con dispositivos anteriores a 4.0.

    Además, recomendaría especificar un tipo de retroalimentación que sea específico para su servicio, en lugar de usar "todos".

    AndroidManifest.xml

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

    Res / xml / 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" /> 

    Se ha producido un error en tu tipo de retroalimentación. Corregido a continuación. Sin embargo, considere el uso de un tipo de retroalimentación 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 utiliza AccessibilityService necesita tener un permiso de configuración> Accesibilidad para acceder a los eventos del sistema. Permitir permiso de configuración. Esto puede funcionar

    Revise este enlace

    El servicio de accesibilidad no se ha iniciado

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.