Android accessibilité des services de détecter la notification
J'essaie de faire de mon application détecter à chaque fois qu'une notification s'affiche. J'ai activé dans les paramètres de l'application et onServiceConnected
est appelé, mais quand je créer une notification ou recevez un e-mail par le biais de l'application gmail rien ne se passe, onAccessibilityEvent
n'est pas appelé.
Manifeste 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");
}
}
Merci pour toute aide.
Avez-vous trouvé la solution? j'ai exactement le même problème.
alanv réponse a fonctionné pour moi
Pour quelle version du système sont vous la programmation? ICS? jelly bean?
Jelly bean 4.1.1
alanv réponse a fonctionné pour moi
Pour quelle version du système sont vous la programmation? ICS? jelly bean?
Jelly bean 4.1.1
OriginalL'auteur ng93 | 2012-09-23
Vous devez vous connecter pour publier un commentaire.
L'accessibilité des services dans Android 4.0 et ci-dessus peuvent comporter bizarrement si il n'y a pas de l'accessibilité du service méta-balise de données défini dans le manifeste. Essayez de définir les méta-données comme dans les exemples ci-dessous. Vous devez continuer à utiliser setServiceInfo() pour maintenir la compatibilité ascendante avec les pré-4.0 appareils.
Aussi, je vous recommande de spécifier un type de rétroaction qui est spécifique à votre service, plutôt que d'utiliser "tous".
AndroidManifest.xml
res/xml/accessibilityservice.xml
Il y a une erreur dans votre feedbackType. Corrigé ci-dessous. Encore, pensez à utiliser un plus spécifiques type de rétroaction.
NotificationService.java
serviceInfo
en XML et le code. Vous pouvez quitter la partie code de AccessibilityServiceInfo parce que le xml est défini dans le manifeste.Au contraire, vous devez le définir en deux endroits pour la compatibilité avec les pré-ICS appareils.
merci! merci! merci!
J'ai fait tout ce que vous avez dit, encore onServiceConnected() n'est pas appelé, et o cours performGlobalAction renvoie la valeur false, que devrais-je savoir de plus? sachant que j'ai activé mon service mobile settings -> Accès
pourriez-vous trouver la cause de votre problème? Même pour moi, onServiceConnected n'est pas appelée si je fais tout ce
OriginalL'auteur alanv
L'application à l'aide AccessibilityService nécessaire d'avoir une autorisation de paramètres>l'Accessibilité afin d'accéder au système d'événements.
Permettre l'autorisation de paramètres . Cela peut fonctionner
vérifier ce lien
l'accessibilité du service n'est pas démarré
OriginalL'auteur anurag