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:
- Recordatorio de Android
- NotificationCompat no se puede resolver a un tipo
- Iniciar nueva actividad desde la notificación en android
- Notificación de Android Push (lento)
- Procesos eliminados por el sistema Android: ¿se eliminan las notificaciones en curso?
<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.
- La notificación de Android no desaparece después de hacer clic en la notificación
- Cómo pasar valor de cadena de servicio a la actividad en android?
- Generador de notificaciones de Android getNotification () vs build ()
- No se puede usar amarillo con el pequeño icono de Notificación de Nougat de Android
- Cómo enviar la notificación del fcm al dispositivo múltiple en el reqest único del fcm
- Import android.support no se puede resolver
- Notificación Haga clic en no iniciar la Actividad dada en los teléfonos Nexus
- Android: ¿Cómo puedo incluir un sonido de notificación utilizando un recurso de sonido?
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
- Adjuntar estilo CardView personalizado al tema
- Agregar efectos de sombra de gota al campo EditarTexto